| <!DOCTYPE html> | 
 | <title>CSS Values and Units Test: Lines of the ch unit can fit the specified number of characters</title> | 
 | <link rel="help" href="https://drafts.csswg.org/css-values-3/#font-relative-lengths"> | 
 | <script src="/resources/testharness.js"></script> | 
 | <script src="/resources/testharnessreport.js"></script> | 
 | <style> | 
 | div { | 
 |   font-family: monospace; | 
 |   font-size: 10px; | 
 |   line-height: 1; | 
 | } | 
 | </style> | 
 | <body> | 
 |   <div id=log></div> | 
 | <script> | 
 | (function() { | 
 |   // Test that lines do not wrap for elements of the width of | 
 |   // 'ch' unit that have the specified number of characters. | 
 |   let container = document.body; | 
 |   let should_fit = []; | 
 |   for (let i = 3; i < 100; i++) { | 
 |     let element = document.createElement('div'); | 
 |     element.style.width = `${i}ch`; | 
 |     element.textContent = `0 ${'0'.repeat(i - 2)}`; | 
 |     container.appendChild(element); | 
 |     should_fit.push(element); | 
 |   } | 
 |  | 
 |   // When the number of characters is +1, it should wrap. | 
 |   let should_wrap = []; | 
 |   for (let i = 3; i < 100; i++) { | 
 |     let element = document.createElement('div'); | 
 |     element.style.width = `${i}ch`; | 
 |     element.textContent = `0 ${'0'.repeat(i - 1)}`; | 
 |     container.appendChild(element); | 
 |     should_wrap.push(element); | 
 |   } | 
 |  | 
 |   for (let element of should_fit) { | 
 |     test(() => { | 
 |       assert_approx_equals(element.offsetHeight, 10, 1); | 
 |     }, `${element.style.width} should fit`); | 
 |   } | 
 |  | 
 |   for (let element of should_wrap) { | 
 |     test(() => { | 
 |       assert_approx_equals(element.offsetHeight, 20, 1); | 
 |     }, `${element.style.width} should wrap`); | 
 |   } | 
 | })(); | 
 | </script> | 
 | </body> |