paul@2 | 1 | #!/usr/bin/env python |
paul@2 | 2 | |
paul@2 | 3 | """ |
paul@2 | 4 | A test of content preferences using examples from the HTTP 1.1 specification. |
paul@2 | 5 | See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1 |
paul@2 | 6 | """ |
paul@2 | 7 | |
paul@2 | 8 | from MoinSupport import getContentPreferences |
paul@2 | 9 | |
paul@2 | 10 | s0 = "audio/*; q=0.2, audio/basic" |
paul@2 | 11 | prefs = getContentPreferences(s0) |
paul@2 | 12 | oprefs = prefs.get_ordered(True) |
paul@2 | 13 | expected = [ |
paul@2 | 14 | ["audio/basic"], |
paul@2 | 15 | ["audio/*"] |
paul@2 | 16 | ] |
paul@2 | 17 | print oprefs == expected, ":", oprefs, "==", expected |
paul@2 | 18 | |
paul@2 | 19 | s1 = "text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c" |
paul@2 | 20 | prefs = getContentPreferences(s1) |
paul@2 | 21 | oprefs = prefs.get_ordered(True) |
paul@2 | 22 | expected = [ |
paul@2 | 23 | ["text/html", "text/x-c"], # equal quality, specificity |
paul@2 | 24 | ["text/x-dvi"], |
paul@2 | 25 | ["text/plain"] |
paul@2 | 26 | ] |
paul@2 | 27 | print oprefs == expected, ":", oprefs, "==", expected |
paul@2 | 28 | |
paul@2 | 29 | s2 = "text/*, text/html, text/html;level=1, */*" |
paul@2 | 30 | prefs = getContentPreferences(s2) |
paul@2 | 31 | oprefs = prefs.get_ordered(True) |
paul@2 | 32 | expected = [ |
paul@2 | 33 | ["text/html;level=1"], # specificity is 1 |
paul@2 | 34 | ["text/html"], # specificity is 0 |
paul@2 | 35 | ["text/*"], # specificity is -1 |
paul@2 | 36 | ["*/*"] # specificity is -2 |
paul@2 | 37 | ] |
paul@2 | 38 | print oprefs == expected, ":", oprefs, "==", expected |
paul@2 | 39 | |
paul@2 | 40 | s3 = "text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5" |
paul@2 | 41 | prefs = getContentPreferences(s3) |
paul@2 | 42 | oprefs = prefs.get_ordered(True) |
paul@2 | 43 | expected = [ |
paul@2 | 44 | ["text/html;level=1"], |
paul@2 | 45 | ["text/html"], # specificity is 1 |
paul@2 | 46 | ["*/*"], # specificity is -2 |
paul@2 | 47 | ["text/html;level=2"], |
paul@2 | 48 | ["text/*"] |
paul@2 | 49 | ] |
paul@2 | 50 | print oprefs == expected, ":", oprefs, "==", expected |
paul@2 | 51 | |
paul@2 | 52 | available = [ |
paul@2 | 53 | "text/html;level=1", |
paul@2 | 54 | "text/html" |
paul@2 | 55 | ] |
paul@2 | 56 | expected = ["text/html;level=1"] |
paul@14 | 57 | print prefs.get_preferred_types(available) == expected, ":", prefs.get_preferred_types(available), "==", expected |
paul@2 | 58 | |
paul@2 | 59 | available = [ |
paul@2 | 60 | "text/plain", |
paul@2 | 61 | "image/jpeg" |
paul@2 | 62 | ] |
paul@2 | 63 | expected = ["image/jpeg"] |
paul@14 | 64 | print prefs.get_preferred_types(available) == expected, ":", prefs.get_preferred_types(available), "==", expected |
paul@2 | 65 | |
paul@2 | 66 | available = [ |
paul@2 | 67 | "text/html;level=2", |
paul@2 | 68 | "text/html;level=3" |
paul@2 | 69 | ] |
paul@2 | 70 | expected = ["text/html;level=3"] |
paul@14 | 71 | print prefs.get_preferred_types(available) == expected, ":", prefs.get_preferred_types(available), "==", expected |
paul@2 | 72 | |
paul@2 | 73 | # vim: tabstop=4 expandtab shiftwidth=4 |