1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/tests/test_preferences.py Mon Jan 23 23:23:20 2012 +0100
1.3 @@ -0,0 +1,73 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +"""
1.7 +A test of content preferences using examples from the HTTP 1.1 specification.
1.8 +See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
1.9 +"""
1.10 +
1.11 +from MoinSupport import getContentPreferences
1.12 +
1.13 +s0 = "audio/*; q=0.2, audio/basic"
1.14 +prefs = getContentPreferences(s0)
1.15 +oprefs = prefs.get_ordered(True)
1.16 +expected = [
1.17 + ["audio/basic"],
1.18 + ["audio/*"]
1.19 + ]
1.20 +print oprefs == expected, ":", oprefs, "==", expected
1.21 +
1.22 +s1 = "text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c"
1.23 +prefs = getContentPreferences(s1)
1.24 +oprefs = prefs.get_ordered(True)
1.25 +expected = [
1.26 + ["text/html", "text/x-c"], # equal quality, specificity
1.27 + ["text/x-dvi"],
1.28 + ["text/plain"]
1.29 + ]
1.30 +print oprefs == expected, ":", oprefs, "==", expected
1.31 +
1.32 +s2 = "text/*, text/html, text/html;level=1, */*"
1.33 +prefs = getContentPreferences(s2)
1.34 +oprefs = prefs.get_ordered(True)
1.35 +expected = [
1.36 + ["text/html;level=1"], # specificity is 1
1.37 + ["text/html"], # specificity is 0
1.38 + ["text/*"], # specificity is -1
1.39 + ["*/*"] # specificity is -2
1.40 + ]
1.41 +print oprefs == expected, ":", oprefs, "==", expected
1.42 +
1.43 +s3 = "text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5"
1.44 +prefs = getContentPreferences(s3)
1.45 +oprefs = prefs.get_ordered(True)
1.46 +expected = [
1.47 + ["text/html;level=1"],
1.48 + ["text/html"], # specificity is 1
1.49 + ["*/*"], # specificity is -2
1.50 + ["text/html;level=2"],
1.51 + ["text/*"]
1.52 + ]
1.53 +print oprefs == expected, ":", oprefs, "==", expected
1.54 +
1.55 +available = [
1.56 + "text/html;level=1",
1.57 + "text/html"
1.58 + ]
1.59 +expected = ["text/html;level=1"]
1.60 +print prefs.get_preferred_type(available) == expected, ":", prefs.get_preferred_type(available), "==", expected
1.61 +
1.62 +available = [
1.63 + "text/plain",
1.64 + "image/jpeg"
1.65 + ]
1.66 +expected = ["image/jpeg"]
1.67 +print prefs.get_preferred_type(available) == expected, ":", prefs.get_preferred_type(available), "==", expected
1.68 +
1.69 +available = [
1.70 + "text/html;level=2",
1.71 + "text/html;level=3"
1.72 + ]
1.73 +expected = ["text/html;level=3"]
1.74 +print prefs.get_preferred_type(available) == expected, ":", prefs.get_preferred_type(available), "==", expected
1.75 +
1.76 +# vim: tabstop=4 expandtab shiftwidth=4