webfontloader 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
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
+ };