test.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. var assert = require('assert');
  2. var parse = require('./index');
  3. assert.ok(!parse('inherit'));
  4. assert.ok(!parse('bogus'));
  5. assert.ok(!parse('10px {bogus}'));
  6. assert.ok(!parse('10px inherit'));
  7. assert.ok(parse.generics);
  8. assert.deepEqual(parse('inherit', '10px serif'), {
  9. size: 10,
  10. family: ['serif']
  11. });
  12. assert.deepEqual(parse('10px serif'), {
  13. size: 10,
  14. family: ['serif']
  15. });
  16. assert.deepEqual(parse('bold 10px serif'), {
  17. weight: 'bold',
  18. size: 10,
  19. family: ['serif']
  20. });
  21. assert.deepEqual(parse('10px/20px serif'), {
  22. size: 10,
  23. lineHeight: 20,
  24. family: ['serif']
  25. });
  26. assert.deepEqual(parse('bolder 10px/20px serif'), {
  27. weight: 'bolder',
  28. size: 10,
  29. lineHeight: 20,
  30. family: ['serif']
  31. });
  32. assert.deepEqual(parse('normal 10px/20px serif'), {
  33. size: 10,
  34. lineHeight: 20,
  35. family: ['serif']
  36. });
  37. assert.deepEqual(parse('italic bolder 10px/20px serif'), {
  38. style: 'italic',
  39. weight: 'bolder',
  40. size: 10,
  41. lineHeight: 20,
  42. family: ['serif']
  43. });
  44. assert.deepEqual(parse('italic normal bolder 10px/20px serif'), {
  45. style: 'italic',
  46. weight: 'bolder',
  47. size: 10,
  48. lineHeight: 20,
  49. family: ['serif']
  50. });
  51. assert.deepEqual(parse('16px/1.2 Georgia,serif'), {
  52. size: 16,
  53. lineHeight: 19.2,
  54. family: ['Georgia', 'serif']
  55. });
  56. assert.deepEqual(parse('italic small-caps bolder 10px/20px serif'), {
  57. style: 'italic',
  58. variant: 'small-caps',
  59. weight: 'bolder',
  60. size: 10,
  61. lineHeight: 20,
  62. family: ['serif']
  63. });
  64. assert.deepEqual(parse('700 18px \'Raleway\', sans-serif'), {
  65. size: 18,
  66. weight: '700',
  67. family: ['\'Raleway\'', 'sans-serif']
  68. });
  69. // Generic font families
  70. [
  71. 'serif',
  72. 'sans-serif',
  73. 'cursive',
  74. 'fantasy',
  75. 'monospace'
  76. ].forEach(function(generic){
  77. assert.equal(parse('12px ' + generic.toUpperCase()).family[0], generic);
  78. });
  79. // DPI/units
  80. assert.equal(parse('10px serif').size, 10);
  81. assert.equal(parse('10px serif', null, 200).size, 10);
  82. assert.equal(parse('100mm serif', null, 25.4).size, 100);
  83. assert.equal(parse('12pt serif', null, 96).size, 16);
  84. assert.equal(parse('12pt serif', null, 192).size, 32);
  85. assert.equal(parse('1in serif', null, 100).size, 100);
  86. assert.equal(parse('1pc serif', null, 60).size, 10);
  87. // em
  88. assert.ok(!parse('1em serif', null, 192).size);
  89. assert.equal(parse('1em serif', '12pt serif', 192).size, 32);
  90. assert.equal(parse('.5em serif', '12pt serif', 192).size, 16);
  91. assert.equal(parse('1em serif', '1in serif', 100).size, 100);
  92. assert.equal(parse('.5em serif', '1in serif', 100).size, 50);
  93. // require parent for percent
  94. assert.ok(!parse('50% serif').size);
  95. assert.equal(parse('50% serif', '100px serif').size, 50);
  96. assert.equal(parse('50% sans-serif', '12pt serif', null, 96).size, 8);
  97. assert.equal(parse('5000% sans-serif', '12pt serif', null, 96).size, 800);
  98. // Serialization
  99. var o = parse('italic 400 12px/2 Unknown Font, sans-serif');
  100. assert.equal(o.toString(), 'italic 12px/24px "Unknown Font", sans-serif');
  101. assert.equal(o.family.length, 2);
  102. assert.equal(o.family[0], 'Unknown Font');
  103. assert.equal(o.family[1], 'sans-serif');
  104. assert.equal(parse('12px SERIF').toString(), '12px serif');