webfontloader 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. data/Gemfile +9 -0
  2. data/LICENSE +201 -0
  3. data/README.md +148 -0
  4. data/Rakefile +243 -0
  5. data/bin/webfontloader-demos +28 -0
  6. data/docs/EVENTS.md +115 -0
  7. data/docs/MODULES.md +49 -0
  8. data/docs/TRANSITIONS.md +107 -0
  9. data/lib/webfontloader.rb +10 -0
  10. data/lib/webfontloader/demo/public/ascender.html +99 -0
  11. data/lib/webfontloader/demo/public/basic.css +9 -0
  12. data/lib/webfontloader/demo/public/custom.html +88 -0
  13. data/lib/webfontloader/demo/public/event-css-active-multiple.html +44 -0
  14. data/lib/webfontloader/demo/public/event-css-active.html +38 -0
  15. data/lib/webfontloader/demo/public/event-css-inactive.html +38 -0
  16. data/lib/webfontloader/demo/public/event-css-loading.html +55 -0
  17. data/lib/webfontloader/demo/public/event-js-active.html +39 -0
  18. data/lib/webfontloader/demo/public/event-js-font-active.html +40 -0
  19. data/lib/webfontloader/demo/public/event-js-loading.html +60 -0
  20. data/lib/webfontloader/demo/public/events-variations.html +130 -0
  21. data/lib/webfontloader/demo/public/events.html +103 -0
  22. data/lib/webfontloader/demo/public/google-css.html +27 -0
  23. data/lib/webfontloader/demo/public/google.html +33 -0
  24. data/lib/webfontloader/demo/public/ie-fast-js.html +47 -0
  25. data/lib/webfontloader/demo/public/ie-slow-js.html +48 -0
  26. data/lib/webfontloader/demo/public/ie-slow-link.html +38 -0
  27. data/lib/webfontloader/demo/public/index.html +70 -0
  28. data/lib/webfontloader/demo/public/typekit-variations.html +50 -0
  29. data/lib/webfontloader/demo/public/typekit.html +41 -0
  30. data/lib/webfontloader/demo/server.rb +92 -0
  31. data/lib/webfontloader/modules.rb +44 -0
  32. data/src-test/ascender/ascender_script_test.js +48 -0
  33. data/src-test/core/cssclassnametest.js +42 -0
  34. data/src-test/core/cssfontfamilynametest.js +54 -0
  35. data/src-test/core/domhelpertest.js +81 -0
  36. data/src-test/core/eventdispatchertest.js +99 -0
  37. data/src-test/core/fontmoduleloadertest.js +30 -0
  38. data/src-test/core/fonttest.js +92 -0
  39. data/src-test/core/fontvariationdescriptiontest.js +76 -0
  40. data/src-test/core/fontwatchertest.js +510 -0
  41. data/src-test/core/useragenttest.js +395 -0
  42. data/src-test/custom/customcsstest.js +30 -0
  43. data/src-test/google/fontapiparsertest.js +92 -0
  44. data/src-test/google/fontapiurlbuildertest.js +28 -0
  45. data/src-test/google/googlefontapitest.js +173 -0
  46. data/src-test/typekit/typekit_script_test.js +171 -0
  47. data/src/ascender/ascender_script.js +84 -0
  48. data/src/async_load.js +3 -0
  49. data/src/closure.js +3 -0
  50. data/src/core/cssclassname.js +21 -0
  51. data/src/core/cssfontfamilyname.js +20 -0
  52. data/src/core/domhelper.js +103 -0
  53. data/src/core/eventdispatcher.js +78 -0
  54. data/src/core/font.js +84 -0
  55. data/src/core/fontmoduleloader.js +25 -0
  56. data/src/core/fontvariationdescription.js +112 -0
  57. data/src/core/fontwatcher.js +121 -0
  58. data/src/core/initialize.js +26 -0
  59. data/src/core/namespace.js +11 -0
  60. data/src/core/useragent.js +41 -0
  61. data/src/core/useragentparser.js +234 -0
  62. data/src/custom/customcss.js +37 -0
  63. data/src/google/fontapiparser.js +94 -0
  64. data/src/google/fontapiurlbuilder.js +39 -0
  65. data/src/google/googlefontapi.js +49 -0
  66. data/src/modules.yml +27 -0
  67. data/src/typekit/typekit_script.js +58 -0
  68. data/tools/compiler/compiler.jar +0 -0
  69. data/tools/jstestdriver/JsTestDriver-1.2.1.jar +0 -0
  70. data/webfontloader.gemspec +144 -0
  71. metadata +191 -0
@@ -0,0 +1,395 @@
1
+ var UserAgentTest = TestCase('UserAgentTest');
2
+
3
+ UserAgentTest.prototype.testBrowserIsFirefox = function() {
4
+ var userAgentParser = new webfont.UserAgentParser(
5
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTB7.1");
6
+ var userAgent = userAgentParser.parse();
7
+
8
+ assertEquals("Firefox", userAgent.getName());
9
+ assertEquals("3.6.3", userAgent.getVersion());
10
+ assertEquals("Macintosh", userAgent.getPlatform());
11
+ assertEquals("10.5", userAgent.getPlatformVersion());
12
+ assertEquals("Gecko", userAgent.getEngine());
13
+ assertEquals("1.9.2.3", userAgent.getEngineVersion());
14
+ assertTrue(userAgent.isSupportingWebFont());
15
+ };
16
+
17
+ UserAgentTest.prototype.testBrowserIsChrome = function() {
18
+ var userAgentParser = new webfont.UserAgentParser(
19
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2");
20
+ var userAgent = userAgentParser.parse();
21
+
22
+ assertEquals("Chrome", userAgent.getName());
23
+ assertEquals("5.0.342.9", userAgent.getVersion());
24
+ assertEquals("Macintosh", userAgent.getPlatform());
25
+ assertEquals("10_5_8", userAgent.getPlatformVersion());
26
+ assertEquals("AppleWebKit", userAgent.getEngine());
27
+ assertEquals("533.2", userAgent.getEngineVersion());
28
+ assertTrue(userAgent.isSupportingWebFont());
29
+ };
30
+
31
+ UserAgentTest.prototype.testBrowserIsSafari = function() {
32
+ var userAgentParser = new webfont.UserAgentParser(
33
+ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10");
34
+ var userAgent = userAgentParser.parse();
35
+
36
+ assertEquals("Safari", userAgent.getName());
37
+ assertEquals("4.0.4", userAgent.getVersion());
38
+ assertEquals("Macintosh", userAgent.getPlatform());
39
+ assertEquals("10_5_8", userAgent.getPlatformVersion());
40
+ assertEquals("AppleWebKit", userAgent.getEngine());
41
+ assertEquals("531.21.8", userAgent.getEngineVersion());
42
+ assertTrue(userAgent.isSupportingWebFont());
43
+ };
44
+
45
+ UserAgentTest.prototype.testBrowserIsIE = function() {
46
+ var userAgentParser = new webfont.UserAgentParser(
47
+ "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
48
+ var userAgent = userAgentParser.parse();
49
+
50
+ assertEquals("MSIE", userAgent.getName());
51
+ assertEquals("7.0", userAgent.getVersion());
52
+ assertEquals("Windows", userAgent.getPlatform());
53
+ assertEquals("5.1", userAgent.getPlatformVersion());
54
+ assertEquals("MSIE", userAgent.getEngine());
55
+ assertEquals("7.0", userAgent.getEngineVersion());
56
+ assertTrue(userAgent.isSupportingWebFont());
57
+ };
58
+
59
+ UserAgentTest.prototype.testBrowserIsIPhone = function() {
60
+ var userAgentParser = new webfont.UserAgentParser(
61
+ "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16");
62
+ var userAgent = userAgentParser.parse();
63
+
64
+ assertEquals("Safari", userAgent.getName());
65
+ assertEquals("4.0", userAgent.getVersion());
66
+ assertEquals("iPhone", userAgent.getPlatform());
67
+ assertEquals("3_1_2", userAgent.getPlatformVersion());
68
+ assertEquals("AppleWebKit", userAgent.getEngine());
69
+ assertEquals("528.18", userAgent.getEngineVersion());
70
+ assertTrue(userAgent.isSupportingWebFont());
71
+ };
72
+
73
+
74
+ UserAgentTest.prototype.testBrowserIsAndroid = function() {
75
+ var userAgentParser = new webfont.UserAgentParser(
76
+ "Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; Nexus One Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");
77
+ var userAgent = userAgentParser.parse();
78
+
79
+ assertEquals("Safari", userAgent.getName());
80
+ assertEquals("4.0", userAgent.getVersion());
81
+ assertEquals("Android", userAgent.getPlatform());
82
+ assertEquals("2.1-update1", userAgent.getPlatformVersion());
83
+ assertEquals("AppleWebKit", userAgent.getEngine());
84
+ assertEquals("530.17", userAgent.getEngineVersion());
85
+ assertTrue(userAgent.isSupportingWebFont());
86
+ };
87
+
88
+ UserAgentTest.prototype.testBrowserIsFirefoxLettersVersion = function() {
89
+ var userAgentParser = new webfont.UserAgentParser(
90
+ "Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.9.2a1pre) Gecko/20090405 Ubuntu/9.04 (jaunty) Firefox/3.6a1pre");
91
+ var userAgent = userAgentParser.parse();
92
+
93
+ assertEquals("Firefox", userAgent.getName());
94
+ assertEquals("3.6a1pre", userAgent.getVersion());
95
+ assertEquals("Linux", userAgent.getPlatform());
96
+ assertEquals("i686", userAgent.getPlatformVersion());
97
+ assertEquals("Gecko", userAgent.getEngine());
98
+ assertEquals("1.9.2a1pre", userAgent.getEngineVersion());
99
+ assertTrue(userAgent.isSupportingWebFont());
100
+ };
101
+
102
+ UserAgentTest.prototype.testBrowserIsFirefoxNoVersion = function() {
103
+ var userAgentParser = new webfont.UserAgentParser(
104
+ "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081202 Firefox (Debian-2.0.0.19-0etch1)");
105
+ var userAgent = userAgentParser.parse();
106
+
107
+ assertEquals("Firefox", userAgent.getName());
108
+ assertEquals("Unknown", userAgent.getVersion());
109
+ assertEquals("Linux", userAgent.getPlatform());
110
+ assertEquals("i686", userAgent.getPlatformVersion());
111
+ assertEquals("Gecko", userAgent.getEngine());
112
+ assertEquals("1.8.1.19", userAgent.getEngineVersion());
113
+ assertFalse(userAgent.isSupportingWebFont());
114
+ };
115
+
116
+ UserAgentTest.prototype.testBrowserIsIELetterVersion = function() {
117
+ var userAgentParser = new webfont.UserAgentParser(
118
+ "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; Media Center PC 3.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)");
119
+ var userAgent = userAgentParser.parse();
120
+
121
+ assertEquals("MSIE", userAgent.getName());
122
+ assertEquals("7.0b", userAgent.getVersion());
123
+ assertEquals("Windows", userAgent.getPlatform());
124
+ assertEquals("5.1", userAgent.getPlatformVersion());
125
+ assertEquals("MSIE", userAgent.getEngine());
126
+ assertEquals("7.0b", userAgent.getEngineVersion());
127
+ assertTrue(userAgent.isSupportingWebFont());
128
+ };
129
+
130
+ UserAgentTest.prototype.testBrowserIsOpera = function() {
131
+ var userAgentParser = new webfont.UserAgentParser(
132
+ "Opera/9.80 (Linux i686; U; en) Presto/2.5.22 Version/10.51");
133
+ var userAgent = userAgentParser.parse();
134
+
135
+ assertEquals("Opera", userAgent.getName());
136
+ assertEquals("10.51", userAgent.getVersion());
137
+ assertEquals("Linux", userAgent.getPlatform());
138
+ assertEquals("i686", userAgent.getPlatformVersion());
139
+ assertEquals("Presto", userAgent.getEngine());
140
+ assertEquals("2.5.22", userAgent.getEngineVersion());
141
+ assertTrue(userAgent.isSupportingWebFont());
142
+ };
143
+
144
+ UserAgentTest.prototype.testBrowserIsOperaFirefoxInUAString = function() {
145
+ var userAgentParser = new webfont.UserAgentParser(
146
+ "Mozilla/5.0 (Linux i686 ; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.70");
147
+ var userAgent = userAgentParser.parse();
148
+
149
+ assertEquals("Opera", userAgent.getName());
150
+ assertEquals("9.70", userAgent.getVersion());
151
+ assertEquals("Linux", userAgent.getPlatform());
152
+ assertEquals("i686", userAgent.getPlatformVersion());
153
+ assertEquals("Gecko", userAgent.getEngine());
154
+ assertEquals("1.8.1", userAgent.getEngineVersion());
155
+ assertFalse(userAgent.isSupportingWebFont());
156
+ };
157
+
158
+ UserAgentTest.prototype.testBrowserIsOperaBeforeVersion10 = function() {
159
+ var userAgentParser = new webfont.UserAgentParser(
160
+ "Opera/9.64 (X11; Linux i686; U; Linux Mint; nb) Presto/2.1.1");
161
+ var userAgent = userAgentParser.parse();
162
+
163
+ assertEquals("Opera", userAgent.getName());
164
+ assertEquals("9.64", userAgent.getVersion());
165
+ assertEquals("Linux", userAgent.getPlatform());
166
+ assertEquals("i686", userAgent.getPlatformVersion());
167
+ assertEquals("Presto", userAgent.getEngine());
168
+ assertEquals("2.1.1", userAgent.getEngineVersion());
169
+ assertFalse(userAgent.isSupportingWebFont());
170
+ };
171
+
172
+ UserAgentTest.prototype.testBrowserIsIEOnMac = function() {
173
+ var userAgentParser = new webfont.UserAgentParser(
174
+ "Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)");
175
+ var userAgent = userAgentParser.parse();
176
+
177
+ assertEquals("MSIE", userAgent.getName());
178
+ assertEquals("5.23", userAgent.getVersion());
179
+ assertEquals("Macintosh", userAgent.getPlatform());
180
+ assertEquals("Unknown", userAgent.getPlatformVersion());
181
+ assertEquals("MSIE", userAgent.getEngine());
182
+ assertEquals("5.23", userAgent.getEngineVersion());
183
+ assertFalse(userAgent.isSupportingWebFont());
184
+ };
185
+
186
+ UserAgentTest.prototype.testBrowserIsIPad = function() {
187
+ var userAgentParser = new webfont.UserAgentParser(
188
+ "Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10");
189
+ var userAgent = userAgentParser.parse();
190
+
191
+ assertEquals("Safari", userAgent.getName());
192
+ assertEquals("4.0.4", userAgent.getVersion());
193
+ assertEquals("iPad", userAgent.getPlatform());
194
+ assertEquals("3_2", userAgent.getPlatformVersion());
195
+ assertEquals("AppleWebKit", userAgent.getEngine());
196
+ assertEquals("531.21.10", userAgent.getEngineVersion());
197
+ assertTrue(userAgent.isSupportingWebFont());
198
+ };
199
+
200
+ UserAgentTest.prototype.testBrowserIsIPadAlt = function() {
201
+ var userAgentParser = new webfont.UserAgentParser(
202
+ "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B360 Safari/531.21.10");
203
+ var userAgent = userAgentParser.parse();
204
+
205
+ assertEquals("Safari", userAgent.getName());
206
+ assertEquals("4.0.4", userAgent.getVersion());
207
+ assertEquals("iPad", userAgent.getPlatform());
208
+ assertEquals("3_2", userAgent.getPlatformVersion());
209
+ assertEquals("AppleWebKit", userAgent.getEngine());
210
+ assertEquals("531.21.10", userAgent.getEngineVersion());
211
+ assertTrue(userAgent.isSupportingWebFont());
212
+ };
213
+
214
+ UserAgentTest.prototype.testBrowserIsIPadWithoutIPhone = function() {
215
+ var userAgentParser = new webfont.UserAgentParser(
216
+ "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10");
217
+ var userAgent = userAgentParser.parse();
218
+
219
+ assertEquals("Safari", userAgent.getName());
220
+ assertEquals("4.0.4", userAgent.getVersion());
221
+ assertEquals("iPad", userAgent.getPlatform());
222
+ assertEquals("3_2", userAgent.getPlatformVersion());
223
+ assertEquals("AppleWebKit", userAgent.getEngine());
224
+ assertEquals("531.21.10", userAgent.getEngineVersion());
225
+ assertTrue(userAgent.isSupportingWebFont());
226
+ };
227
+
228
+ UserAgentTest.prototype.testBrowserIsIPod = function() {
229
+ var userAgentParser = new webfont.UserAgentParser(
230
+ "Mozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11a");
231
+ var userAgent = userAgentParser.parse();
232
+
233
+ assertEquals("Unknown", userAgent.getName());
234
+ assertEquals("Unknown", userAgent.getVersion());
235
+ assertEquals("iPod", userAgent.getPlatform());
236
+ assertEquals("2_2_1", userAgent.getPlatformVersion());
237
+ assertEquals("AppleWebKit", userAgent.getEngine());
238
+ assertEquals("525.18.1", userAgent.getEngineVersion());
239
+ assertTrue(userAgent.isSupportingWebFont());
240
+ };
241
+
242
+ UserAgentTest.prototype.testBrowserIsIPodSafari = function() {
243
+ var userAgentParser = new webfont.UserAgentParser(
244
+ "Mozilla/5.0 (iPod; U; CPU iPhone OS 3_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C144 Safari/528.16");
245
+ var userAgent = userAgentParser.parse();
246
+
247
+ assertEquals("Safari", userAgent.getName());
248
+ assertEquals("4.0", userAgent.getVersion());
249
+ assertEquals("iPod", userAgent.getPlatform());
250
+ assertEquals("3_1", userAgent.getPlatformVersion());
251
+ assertEquals("AppleWebKit", userAgent.getEngine());
252
+ assertEquals("528.18", userAgent.getEngineVersion());
253
+ assertTrue(userAgent.isSupportingWebFont());
254
+ };
255
+
256
+ UserAgentTest.prototype.testBrowserIsSafariWithPlusVersion = function() {
257
+ var userAgentParser = new webfont.UserAgentParser(
258
+ "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; tr) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2");
259
+ var userAgent = userAgentParser.parse();
260
+
261
+ assertEquals("Safari", userAgent.getName());
262
+ assertEquals("4.0dp1", userAgent.getVersion());
263
+ assertEquals("Macintosh", userAgent.getPlatform());
264
+ assertEquals("10_4_11", userAgent.getPlatformVersion());
265
+ assertEquals("AppleWebKit", userAgent.getEngine());
266
+ assertEquals("528.4+", userAgent.getEngineVersion());
267
+ assertTrue(userAgent.isSupportingWebFont());
268
+ };
269
+
270
+ UserAgentTest.prototype.testBrowserIsIEWithTridentVersion = function() {
271
+ var userAgentParser = new webfont.UserAgentParser(
272
+ "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)");
273
+ var userAgent = userAgentParser.parse();
274
+
275
+ assertEquals("MSIE", userAgent.getName());
276
+ assertEquals("8.0", userAgent.getVersion());
277
+ assertEquals("Windows", userAgent.getPlatform());
278
+ assertEquals("6.1", userAgent.getPlatformVersion());
279
+ assertEquals("MSIE", userAgent.getEngine());
280
+ assertEquals("8.0", userAgent.getEngineVersion());
281
+ assertTrue(userAgent.isSupportingWebFont());
282
+ };
283
+
284
+ // Invented user agent strings
285
+
286
+ UserAgentTest.prototype.testBrowserGeckoShouldSupportWebFont = function() {
287
+ var userAgentParser = new webfont.UserAgentParser(
288
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.1.4) Gecko/20091016 (.NET CLR 3.5.30729)");
289
+ var userAgent = userAgentParser.parse();
290
+
291
+ assertEquals("Mozilla", userAgent.getName());
292
+ assertEquals("Unknown", userAgent.getVersion());
293
+ assertEquals("Windows", userAgent.getPlatform());
294
+ assertEquals("Gecko", userAgent.getEngine());
295
+ assertEquals("1.9.1.4", userAgent.getEngineVersion());
296
+ assertTrue(userAgent.isSupportingWebFont());
297
+ };
298
+
299
+ UserAgentTest.prototype.testBrowserGeckoNotExistingVersionShouldSupportWebFont = function() {
300
+ var userAgentParser = new webfont.UserAgentParser(
301
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:2.5.8) Gecko/20091016 (.NET CLR 3.5.30729)");
302
+ var userAgent = userAgentParser.parse();
303
+
304
+ assertEquals("Mozilla", userAgent.getName());
305
+ assertEquals("Unknown", userAgent.getVersion());
306
+ assertEquals("Windows", userAgent.getPlatform());
307
+ assertEquals("5.1", userAgent.getPlatformVersion());
308
+ assertEquals("Gecko", userAgent.getEngine());
309
+ assertEquals("2.5.8", userAgent.getEngineVersion());
310
+ assertTrue(userAgent.isSupportingWebFont());
311
+ };
312
+
313
+ UserAgentTest.prototype.testBrowserGeckoVer110ShouldSupportWebFont = function() {
314
+ var userAgentParser = new webfont.UserAgentParser(
315
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.10.1b) Gecko/20091016 (.NET CLR 3.5.30729)");
316
+ var userAgent = userAgentParser.parse();
317
+
318
+ assertEquals("Mozilla", userAgent.getName());
319
+ assertEquals("Unknown", userAgent.getVersion());
320
+ assertEquals("Windows", userAgent.getPlatform());
321
+ assertEquals("5.1", userAgent.getPlatformVersion());
322
+ assertEquals("Gecko", userAgent.getEngine());
323
+ assertEquals("1.10.1b", userAgent.getEngineVersion());
324
+ assertTrue(userAgent.isSupportingWebFont());
325
+ };
326
+
327
+ UserAgentTest.prototype.testBrowserGeckoWeirdVerShouldNotSupportWebFont = function() {
328
+ var userAgentParser = new webfont.UserAgentParser(
329
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.b) Gecko/20091016 (.NET CLR 3.5.30729)");
330
+ var userAgent = userAgentParser.parse();
331
+
332
+ assertEquals("Mozilla", userAgent.getName());
333
+ assertEquals("Unknown", userAgent.getVersion());
334
+ assertEquals("Windows", userAgent.getPlatform());
335
+ assertEquals("5.1", userAgent.getPlatformVersion());
336
+ assertEquals("Gecko", userAgent.getEngine());
337
+ assertEquals("1.b", userAgent.getEngineVersion());
338
+ assertFalse(userAgent.isSupportingWebFont());
339
+ };
340
+
341
+ UserAgentTest.prototype.testBrowserGeckoYetAnotherWeirdVerShouldNotSupportWebFont = function() {
342
+ var userAgentParser = new webfont.UserAgentParser(
343
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.b) Gecko/20091016 (.NET CLR 3.5.30729)");
344
+ var userAgent = userAgentParser.parse();
345
+
346
+ assertEquals("Mozilla", userAgent.getName());
347
+ assertEquals("Unknown", userAgent.getVersion());
348
+ assertEquals("Windows", userAgent.getPlatform());
349
+ assertEquals("5.1", userAgent.getPlatformVersion());
350
+ assertEquals("Gecko", userAgent.getEngine());
351
+ assertEquals("1.b", userAgent.getEngineVersion());
352
+ assertFalse(userAgent.isSupportingWebFont());
353
+ };
354
+
355
+ UserAgentTest.prototype.testBrowserGeckoNoSubVerShouldNotSupportWebFont = function() {
356
+ var userAgentParser = new webfont.UserAgentParser(
357
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9) Gecko/20091016 (.NET CLR 3.5.30729)");
358
+ var userAgent = userAgentParser.parse();
359
+
360
+ assertEquals("Mozilla", userAgent.getName());
361
+ assertEquals("Unknown", userAgent.getVersion());
362
+ assertEquals("Windows", userAgent.getPlatform());
363
+ assertEquals("5.1", userAgent.getPlatformVersion());
364
+ assertEquals("Gecko", userAgent.getEngine());
365
+ assertEquals("1.9", userAgent.getEngineVersion());
366
+ assertFalse(userAgent.isSupportingWebFont());
367
+ };
368
+
369
+ UserAgentTest.prototype.testBrowserGeckoHighMinorVerShouldNotSupportWebFont = function() {
370
+ var userAgentParser = new webfont.UserAgentParser(
371
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:0.10.1) Gecko/20091016 (.NET CLR 3.5.30729)");
372
+ var userAgent = userAgentParser.parse();
373
+
374
+ assertEquals("Mozilla", userAgent.getName());
375
+ assertEquals("Unknown", userAgent.getVersion());
376
+ assertEquals("Windows", userAgent.getPlatform());
377
+ assertEquals("5.1", userAgent.getPlatformVersion());
378
+ assertEquals("Gecko", userAgent.getEngine());
379
+ assertEquals("0.10.1", userAgent.getEngineVersion());
380
+ assertFalse(userAgent.isSupportingWebFont());
381
+ };
382
+
383
+ UserAgentTest.prototype.testBrowserGeckoHighSubVerShouldNotSupportWebFont = function() {
384
+ var userAgentParser = new webfont.UserAgentParser(
385
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:0.3.42) Gecko/20091016 (.NET CLR 3.5.30729)");
386
+ var userAgent = userAgentParser.parse();
387
+
388
+ assertEquals("Mozilla", userAgent.getName());
389
+ assertEquals("Unknown", userAgent.getVersion());
390
+ assertEquals("Windows", userAgent.getPlatform());
391
+ assertEquals("5.1", userAgent.getPlatformVersion());
392
+ assertEquals("Gecko", userAgent.getEngine());
393
+ assertEquals("0.3.42", userAgent.getEngineVersion());
394
+ assertFalse(userAgent.isSupportingWebFont());
395
+ };
@@ -0,0 +1,30 @@
1
+ var CustomCssTest = TestCase('CustomCssTest');
2
+
3
+ CustomCssTest.prototype.testFoo = function() {
4
+ var links = [];
5
+ var head = '';
6
+
7
+ var fakeDomHelper = {
8
+ createCssLink: function(link) {
9
+ links.push(link);
10
+ },
11
+ insertInto: function(tag, e) {
12
+ head = tag;
13
+ }
14
+ };
15
+ var defaultModule = new webfont.CustomCss(fakeDomHelper, {
16
+ families: [ 'Font1', 'Font2', 'Font3' ], urls: [ 'http://moo',
17
+ 'http://meuh' ]});
18
+ var families = null;
19
+
20
+ defaultModule.load(function(fontFamilies) { families = fontFamilies; });
21
+ assertEquals('head', head);
22
+ assertEquals(2, links.length);
23
+ assertEquals('http://moo', links[0]);
24
+ assertEquals('http://meuh', links[1]);
25
+ assertNotNull(families);
26
+ assertEquals(3, families.length);
27
+ assertEquals('Font1', families[0]);
28
+ assertEquals('Font2', families[1]);
29
+ assertEquals('Font3', families[2]);
30
+ };
@@ -0,0 +1,92 @@
1
+ var FontApiParserTest = TestCase('FontApiParserTest');
2
+
3
+ FontApiParserTest.prototype.testParsedValuesAreCoherent = function() {
4
+ var fontFamilies = [ 'Tangerine', 'Droid Serif:bi',
5
+ 'Yanone Kaffeesatz:200,300,400,700',
6
+ 'Cantarell:italic,b' ];
7
+ var fontApiParser = new webfont.FontApiParser(fontFamilies);
8
+
9
+ fontApiParser.parse();
10
+ var parsedFontFamilies = fontApiParser.getFontFamilies();
11
+
12
+ assertEquals(4, parsedFontFamilies.length);
13
+ assertEquals('Tangerine', parsedFontFamilies[0]);
14
+ assertEquals('Droid Serif', parsedFontFamilies[1]);
15
+ assertEquals('Yanone Kaffeesatz', parsedFontFamilies[2]);
16
+ assertEquals('Cantarell', parsedFontFamilies[3]);
17
+ var variations = fontApiParser.getVariations();
18
+
19
+ var tangerine = variations['Tangerine'];
20
+ assertNotNull(tangerine);
21
+ assertEquals(1, tangerine.length);
22
+ assertEquals('n4', tangerine[0]);
23
+
24
+ var droidSerif = variations['Droid Serif'];
25
+ assertNotNull(droidSerif);
26
+ assertEquals(1, droidSerif.length);
27
+ assertEquals('i7', droidSerif[0]);
28
+
29
+ var yanoneKaffeesatz = variations['Yanone Kaffeesatz'];
30
+ assertNotNull(yanoneKaffeesatz);
31
+ assertEquals(4, yanoneKaffeesatz.length);
32
+ assertEquals('n2', yanoneKaffeesatz[0]);
33
+ assertEquals('n3', yanoneKaffeesatz[1]);
34
+ assertEquals('n4', yanoneKaffeesatz[2]);
35
+ assertEquals('n7', yanoneKaffeesatz[3]);
36
+
37
+ var cantarell = variations['Cantarell'];
38
+ assertNotNull(cantarell);
39
+ assertEquals(2, cantarell.length);
40
+ assertEquals('i4', cantarell[0]);
41
+ assertEquals('n7', cantarell[1]);
42
+ };
43
+
44
+ FontApiParserTest.prototype.testMixOfNumericWeightAndStyle = function() {
45
+ var fontFamilies = [ 'Nobile:700i,b,200i,r,i700' ];
46
+ var fontApiParser = new webfont.FontApiParser(fontFamilies);
47
+
48
+ fontApiParser.parse();
49
+ var parsedFontFamilies = fontApiParser.getFontFamilies();
50
+
51
+ assertEquals(1, parsedFontFamilies.length);
52
+ assertEquals('Nobile', parsedFontFamilies[0]);
53
+ var variations = fontApiParser.getVariations();
54
+
55
+ var nobile = variations['Nobile'];
56
+ assertNotNull(nobile);
57
+ assertEquals(4, nobile.length);
58
+ assertEquals('i7', nobile[0]);
59
+ assertEquals('n7', nobile[1]);
60
+ assertEquals('i2', nobile[2]);
61
+ assertEquals('n4', nobile[3]);
62
+ };
63
+
64
+ FontApiParserTest.prototype.testTypoBildInsteadOfBold = function() {
65
+ var fontFamilies = [ 'Nobile:bild' ];
66
+ var fontApiParser = new webfont.FontApiParser(fontFamilies);
67
+
68
+ fontApiParser.parse();
69
+
70
+ var parsedFontFamilies = fontApiParser.getFontFamilies();
71
+ assertEquals(1, parsedFontFamilies.length);
72
+ assertEquals('Nobile', parsedFontFamilies[0]);
73
+
74
+ var variations = fontApiParser.getVariations();
75
+ var nobile = variations['Nobile'];
76
+ assertNull(nobile);
77
+ };
78
+
79
+ FontApiParserTest.prototype.testNonSense = function() {
80
+ var fontFamilies = [ 'Nobile:dwe,^%^%fewf,$9940@#!@#$%^&*()_+}POIBJ{}{' ];
81
+ var fontApiParser = new webfont.FontApiParser(fontFamilies);
82
+
83
+ fontApiParser.parse();
84
+ var parsedFontFamilies = fontApiParser.getFontFamilies();
85
+
86
+ assertEquals(1, parsedFontFamilies.length);
87
+ assertEquals('Nobile', parsedFontFamilies[0]);
88
+
89
+ var variations = fontApiParser.getVariations();
90
+ var nobile = variations['Nobile'];
91
+ assertNull(nobile);
92
+ };