This is a test to make sure ch units work as intended.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS document.getElementById("box_mono_zero").clientWidth is 0
PASS document.getElementById("box_mono_four1").clientWidth is document.getElementById("box_mono_four2").clientWidth
PASS document.getElementById("box_monofallthrough_four1").clientWidth is document.getElementById("box_monofallthrough_four2").clientWidth
PASS document.getElementById("mono_box_alphalen1").clientWidth is document.getElementById("mono_box_alphalen2").clientWidth
PASS document.getElementById("box_one").clientWidth * 26 is document.getElementById("box_alphalen").clientWidth
PASS document.getElementById("times_box_one").clientWidth * 4 is document.getElementById("box_times_four").clientWidth
PASS document.getElementById("arial_box_one").clientWidth * 4 is document.getElementById("box_arial_four").clientWidth
PASS document.getElementById("helvetica_box_one").clientWidth * 4 is document.getElementById("box_helvetica_four").clientWidth
PASS document.getElementById("ref_box_arial_one").clientWidth is >= document.getElementById("box_arial_one").clientWidth
PASS document.getElementById("ref_box_times_one").clientWidth is >= document.getElementById("box_times_one").clientWidth
PASS document.getElementById("ref_box_sansserif_one").clientWidth is >= document.getElementById("box_sansserif_one").clientWidth
PASS w1 !== w2 || h1 !== h2 is false
PASS ps1h > ps2h && ps1h > ps3h is true
PASS document.getElementById("box_mono_one").clientWidth is document.getElementById("box_mono").clientWidth
PASS successfullyParsed is true

TEST COMPLETE
This is a test to make sure ch units work as intended. You should not see anything red on this page.

Only 'PASS' should be visible:
PASS
PASS
PASS
PASS
The whole lower case alphabet should be readable:
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
Four zeroes should be visible, nothing else:
0000
0000
0000
There should be more than one green '|' visible (non-monospaced fonts):
|||0
|||
|||0
|||
|||0
|||
This box has a 20px font size. The last two '0's should be the same size.
0
0
0
I'm a pseudo selected first line, I should be bigger than the rest.
I'm the second line.
Last in line. But one day... the throne will be mine!
0
