Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Unit tests #126

Open
wants to merge 33 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
b903c82
Unit tests for microformat and property names
JKingweb Jul 7, 2023
246d842
Whitespace-related name tests
JKingweb Jul 7, 2023
971c603
Tests for multiple root types on one element
JKingweb Jul 7, 2023
a87f810
Add negative tests for property names based on pefix
JKingweb Jul 7, 2023
384b73a
Document common behaviour of duplicate properties
JKingweb Jul 7, 2023
0a3e9d4
Split underspecified behaviour from certain stuff
JKingweb Jul 8, 2023
8b5b80a
Tests for p-properties
JKingweb Jul 8, 2023
9b0a510
Pre-empt all possible implied properties
JKingweb Jul 8, 2023
9e01ff0
Tests for u-properties
JKingweb Jul 8, 2023
dcc26ce
Add missing "else" u- test
JKingweb Jul 8, 2023
fd28ab7
Tests for dt-properties and e-properties
JKingweb Jul 9, 2023
4e09cf6
More negative tests for property parsing
JKingweb Jul 9, 2023
1de63e0
Implied name tests
JKingweb Jul 9, 2023
904d24c
Make explicit when properties are not part of test
JKingweb Jul 9, 2023
3c4fcab
Add no-trim tests for implied name
JKingweb Jul 9, 2023
bc48625
Compress whitespace
JKingweb Jul 10, 2023
7c42894
Tests for implied photo
JKingweb Jul 10, 2023
e310fa4
Fix various test errors
JKingweb Jul 10, 2023
de96b69
Tests for implied url
JKingweb Jul 10, 2023
204a0c5
VCP tests for p-properties
JKingweb Jul 11, 2023
5639c6a
VCP tests for u-properties
JKingweb Jul 12, 2023
f1d4be6
More p- and u- VCP tests
JKingweb Jul 12, 2023
461803e
Restore accidentally deleted test
JKingweb Jul 12, 2023
15a2179
VCP tests for dt-properties
JKingweb Jul 14, 2023
c97a416
Use less problematic date format
JKingweb Jul 14, 2023
244dbe9
Add special-case elements for VCP date parsing
JKingweb Jul 14, 2023
7b7b252
Whitespace cleanup
JKingweb Jul 14, 2023
69c7dcf
VCP test for e-properties
JKingweb Jul 14, 2023
96cc6f6
Tests for microformat nesting in its sudry forms
JKingweb Jul 18, 2023
a69ed8d
Use "test" prefix for roots to avoid confusion
JKingweb Jul 18, 2023
b7f9da2
Fix some test errors
JKingweb Jul 22, 2023
2c2840c
Ensure output is the same with either textContent
JKingweb Jul 22, 2023
cd4eaee
Add a README file for unit tests
JKingweb Mar 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
233 changes: 233 additions & 0 deletions tests/microformats-v2-unit/implied/implied-name.html

Large diffs are not rendered by default.

1,777 changes: 1,777 additions & 0 deletions tests/microformats-v2-unit/implied/implied-name.json

Large diffs are not rendered by default.

109 changes: 109 additions & 0 deletions tests/microformats-v2-unit/implied/implied-photo.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
<!--
NOTE:
The details of textContent processing are tested in a dedicated test
series, thus here valid output is carefully designed to pass even if no
trimming is performed.

The details of URL resolution and normalization are likewise tested in a
dedicated test series, thus valid output is carefully designed to pass
even if no URL normalization is performed. URL resolution is an unavoidable
aspect of these tests, but resolution complexity is kept to a minimum.
-->

<img class="h-test-img-src-missing-alt-missing">
<img class="h-test-img-src-missing-alt-empty" alt="">
<img class="h-test-img-src-missing-alt-filled" alt="NameOnly">
<img class="h-test-img-src-missing-alt-filled-space" alt=" NameOnly ">
<img class="h-test-img-src-empty-alt-missing" src="">
<img class="h-test-img-src-empty-alt-empty" src="" alt="">
<img class="h-test-img-src-empty-alt-filled" src="" alt="Valid">
<img class="h-test-img-src-empty-alt-filled-space" src="" alt=" No Trim ">
<img class="h-test-img-src-filled-alt-missing" src="http://example.test/Valid">
<img class="h-test-img-src-filled-alt-empty" src="http://example.test/Valid" alt="">
<img class="h-test-img-src-filled-alt-filled" src="http://example.test/Valid" alt="Valid">
<img class="h-test-img-src-filled-alt-filled-space" src="http://example.test/Valid" alt=" No Trim ">

<object class="h-test-object-data-missing">Name</object>
<object class="h-test-object-data-empty" data="">Name</object>
<object class="h-test-object-data-filled" data="http://example.test/Valid">Name</object>
<object class="h-test-object-data-filled-has-child" data="http://example.test/Invalid"><div class="h-test-child">NotPartOfTest</div></object>
<object class="h-test-object-data-filled-has-u" data="http://example.test/Invalid"><div class="u-override">http://exaple.test/NotPartOfTest</div></object>
<object class="h-test-object-data-filled-has-photo" data="http://example.test/Invalid"><div class="p-photo">Valid</div></object>

<div class="h-test-img-onlychildoftype-src-missing-alt-missing"><img></div>
<div class="h-test-img-onlychildoftype-src-missing-alt-empty"><img alt=""></div>
<div class="h-test-img-onlychildoftype-src-missing-alt-filled"><img alt="NameOnly"></div>
<div class="h-test-img-onlychildoftype-src-missing-alt-filled-space"><img alt=" NameOnly "></div>
<div class="h-test-img-onlychildoftype-src-empty-alt-missing"><img src=""></div>
<div class="h-test-img-onlychildoftype-src-empty-alt-empty"><img src="" alt=""></div>
<div class="h-test-img-onlychildoftype-src-empty-alt-filled"><img src="" alt="Valid"></div>
<div class="h-test-img-onlychildoftype-src-empty-alt-filled-space"><img src="" alt=" No Trim "></div>
<div class="h-test-img-onlychildoftype-src-filled-alt-missing"><img src="http://example.test/Valid"></div>
<div class="h-test-img-onlychildoftype-src-filled-alt-empty"><img src="http://example.test/Valid" alt=""></div>
<div class="h-test-img-onlychildoftype-src-filled-alt-filled"><img src="http://example.test/Valid" alt="Valid"></div>
<div class="h-test-img-onlychildoftype-src-filled-alt-filled-space"><img src="http://example.test/Valid" alt=" No Trim "></div>
<div class="h-test-img-onlychildoftype-type-sibling-before"><img><img src="http://example.test/Invalid" class="p-name"></div>
<div class="h-test-img-onlychildoftype-type-sibling-after"><img src="http://example.test/Invalid" class="p-name"><img></div>
<div class="h-test-img-onlychildoftype-nontype-sibling-before"><hr><img src="http://example.test/Valid"></div>
<div class="h-test-img-onlychildoftype-nontype-sibling-after"><img src="http://example.test/Valid"><hr></div>
<div class="h-test-img-onlychildoftype-has-child"><img class="h-test-child p-name" src="http://example.test/ChildOnly"></div>
<div class="h-test-img-onlychildoftype-has-u"><img class="u-override" src="http://example.test/NotPartOfTest"></div>
<div class="h-test-img-onlychildoftype-has-photo"><img class="p-photo" src="http://example.test/Invalid"></div>
<object class="h-test-img-onlychildoftype-root-object"><img src="http://example.test/Valid"></object>
<object class="h-test-img-onlychildoftype-root-object-with-data" data="http://example.test/Valid"><img src="http://example.test/Invalid" class="p-name"></object>
<object class="h-test-img-onlychildoftype-root-object-with-data-empty" data=""><img src="http://example.test/Invalid" class="p-name"></object>

<div class="h-test-object-onlychildoftype-data-missing"><object></object></div>
<div class="h-test-object-onlychildoftype-data-empty"><object data="">Name</object></div>
<div class="h-test-object-onlychildoftype-data-filled"><object data="http://example.test/Valid">Name</object></div>
<div class="h-test-object-onlychildoftype-type-sibling-before"><object></object><object data="http://example.test/Invalid">Name</object></div>
<div class="h-test-object-onlychildoftype-type-sibling-after"><object data="http://example.test/Invalid"><object>Name</object></div>
<div class="h-test-object-onlychildoftype-nontype-sibling-before"><hr><object data="http://example.test/Valid">Name</object></div>
<div class="h-test-object-onlychildoftype-nontype-sibling-after"><object data="http://example.test/Valid">Name</object><hr></div>
<div class="h-test-object-onlychildoftype-has-child"><object data="http://example.test/Invalid"><div class="h-test-child">NotPartOfTest</div></object></div>
<div class="h-test-object-onlychildoftype-has-u"><object data="http://example.test/NotPartOfTest"><div class="u-override">http://example.test/NameAndOverride</div></object></div>
<div class="h-test-object-onlychildoftype-has-photo"><object data="http://example.test/Invalid"><div class="p-photo">Valid</div></object></div>
<object class="h-test-object-onlychildoftype-root-object"><object data="http://example.test/Valid">Name</object></object>
<object class="h-test-object-onlychildoftype-root-object-with-data" data="http://example.test/Valid"><object data="http://example.test/Invalid" class="p-name">Name</object></object>
<object class="h-test-object-onlychildoftype-root-object-with-data-empty" data=""><object data="http://example.test/Invalid" class="p-name">Name</object></object>

<div class="h-test-img-onlygrandchildoftype-src-missing-alt-missing"><div><img></div></div>
<div class="h-test-img-onlygrandchildoftype-src-missing-alt-empty"><div><img alt=""></div></div>
<div class="h-test-img-onlygrandchildoftype-src-missing-alt-filled"><div><img alt="NameOnly"></div></div>
<div class="h-test-img-onlygrandchildoftype-src-missing-alt-filled-space"><div><img alt=" NameOnly "></div></div>
<div class="h-test-img-onlygrandchildoftype-src-empty-alt-missing"><div><img src=""></div></div>
<div class="h-test-img-onlygrandchildoftype-src-empty-alt-empty"><div><img src="" alt=""></div></div>
<div class="h-test-img-onlygrandchildoftype-src-empty-alt-filled"><div><img src="" alt="Valid"></div></div>
<div class="h-test-img-onlygrandchildoftype-src-empty-alt-filled-space"><div><img src="" alt=" No Trim "></div></div>
<div class="h-test-img-onlygrandchildoftype-src-filled-alt-missing"><div><img src="http://example.test/Valid"></div></div>
<div class="h-test-img-onlygrandchildoftype-src-filled-alt-empty"><div><img src="http://example.test/Valid" alt=""></div></div>
<div class="h-test-img-onlygrandchildoftype-src-filled-alt-filled"><div><img src="http://example.test/Valid" alt="Valid"></div></div>
<div class="h-test-img-onlygrandchildoftype-src-filled-alt-filled-space"><div><img src="http://example.test/Valid" alt=" No Trim "></div></div>
<div class="h-test-img-onlygrandchildoftype-type-sibling-before"><div><img><img src="http://example.test/Invalid" class="p-name"></div></div>
<div class="h-test-img-onlygrandchildoftype-type-sibling-after"><div><img src="http://example.test/Invalid" class="p-name"><img></div></div>
<div class="h-test-img-onlygrandchildoftype-nontype-sibling-before"><div><hr><img src="http://example.test/Valid"></div></div>
<div class="h-test-img-onlygrandchildoftype-nontype-sibling-after"><div><img src="http://example.test/Valid"><hr></div></div>
<div class="h-test-img-onlygrandchildoftype-parent-sibling-before"><hr><div><img src="http://example.test/Invalid" class="p-name"></div></div>
<div class="h-test-img-onlygrandchildoftype-parent-sibling-after"><div><img src="http://example.test/Invalid" class="p-name"></div><hr></div>
<div class="h-test-img-onlygrandchildoftype-has-child"><div><img class="h-test-child p-name" src="http://example.test/ChildOnly"></div></div>
<div class="h-test-img-onlygrandchildoftype-has-u"><div><img class="u-override" src="http://example.test/NotPartOfTest"></div></div>
<div class="h-test-img-onlygrandchildoftype-has-photo"><div><img class="p-photo" src="http://example.test/Invalid"></div></div>
<object class="h-test-img-onlygrandchildoftype-root-object"><div><img src="http://example.test/Valid"></div></object>
<object class="h-test-img-onlygrandchildoftype-root-object-with-data" data="http://example.test/Valid"><div><img src="http://example.test/Invalid" class="p-name"></div></object>
<object class="h-test-img-onlygrandchildoftype-root-object-with-data-empty" data=""><div><img src="http://example.test/Invalid" class="p-name"></div></object>

<div class="h-test-object-onlygrandchildoftype-data-missing"><div><object></object></div></div>
<div class="h-test-object-onlygrandchildoftype-data-empty"><div><object data="">Name</object></div></div>
<div class="h-test-object-onlygrandchildoftype-data-filled"><div><object data="http://example.test/Valid">Name</object></div></div>
<div class="h-test-object-onlygrandchildoftype-type-sibling-before"><div><object></object><object data="http://example.test/Invalid">Name</object></div></div>
<div class="h-test-object-onlygrandchildoftype-type-sibling-after"><div><object data="http://example.test/Invalid"></object><object>Name</object></div></div>
<div class="h-test-object-onlygrandchildoftype-nontype-sibling-before"><div><hr><object data="http://example.test/Valid">Name</object></div></div>
<div class="h-test-object-onlygrandchildoftype-nontype-sibling-after"><div><object data="http://example.test/Valid">Name</object><hr></div></div>
<div class="h-test-object-onlygrandchildoftype-parent-sibling-before"><hr><div><object data="http://example.test/Invalid">Name</object></div></div>
<div class="h-test-object-onlygrandchildoftype-parent-sibling-after"><div><object data="http://example.test/Invalid">Name</object></div><hr></div>
<div class="h-test-object-onlygrandchildoftype-has-child"><div><object data="http://example.test/Invalid"><div class="h-test-child">NotPartOfTest</div></object></div></div>
<div class="h-test-object-onlygrandchildoftype-has-u"><div><object data="http://example.test/NotPartOfTest"><div class="u-override">http://example.test/NameAndOverride</div></object></div></div>
<div class="h-test-object-onlygrandchildoftype-has-photo"><div><object data="http://example.test/Invalid"><div class="p-photo">Valid</div></object></div></div>
<object class="h-test-object-onlygrandchildoftype-root-object"><div><object data="http://example.test/Valid">Name</object></div></object>
<object class="h-test-object-onlygrandchildoftype-root-object-with-data" data="http://example.test/Valid"><div><object data="http://example.test/Invalid">Name</object></div></object>
<object class="h-test-object-onlygrandchildoftype-root-object-with-data-empty" data=""><div><object data="http://example.test/Invalid">Name</object></div></object>