@@ -108,5 +108,51 @@ void main() {
108108 expect (result.contains ('あ' ), isFalse);
109109 expect (result.toMarkup (), markup);
110110 });
111+ group ("generic timestamp tests" , () {
112+ test ('OrgSimpleTimestamp' , () {
113+ final markup = '<2025-05-30>' ;
114+ final result = parser.parse (markup).value as OrgTimestamp ;
115+
116+ expect (result.isActive, isTrue);
117+ expect (result, isA <OrgTimestamp >());
118+ expect (result, isA <OrgSimpleTimestamp >());
119+ expect (result, isNot (isA <OrgDateRangeTimestamp >()));
120+ expect (result, isNot (isA <OrgTimeRangeTimestamp >()));
121+ expect (result.toMarkup (), markup);
122+ });
123+ test ('OrgTimeRangeTimestamp' , () {
124+ final markup = '<2025-05-30 15:00-16:00>' ;
125+ final result = parser.parse (markup).value as OrgTimestamp ;
126+
127+ expect (result.isActive, isTrue);
128+ expect (result, isA <OrgTimestamp >());
129+ expect (result, isA <OrgTimeRangeTimestamp >());
130+ expect (result, isNot (isA <OrgSimpleTimestamp >()));
131+ expect (result, isNot (isA <OrgDateRangeTimestamp >()));
132+ expect (result.toMarkup (), markup);
133+ });
134+ test ('OrgDateRangeTimestamp' , () {
135+ final markup = '[2025-05-30]--[2025-06-30]' ;
136+ final result = parser.parse (markup).value as OrgTimestamp ;
137+
138+ expect (result.isActive, isFalse);
139+ expect (result, isA <OrgTimestamp >());
140+ expect (result, isA <OrgDateRangeTimestamp >());
141+ expect (result, isNot (isA <OrgSimpleTimestamp >()));
142+ expect (result, isNot (isA <OrgTimeRangeTimestamp >()));
143+ expect (result.toMarkup (), markup);
144+ });
145+ test ('Exhaustivity' , () {
146+ final markup = '[2025-05-30]--[2025-06-30]' ;
147+ final result = parser.parse (markup).value as OrgTimestamp ;
148+
149+ final type = switch (result) {
150+ OrgTimeRangeTimestamp () => result.toString (),
151+ OrgDateRangeTimestamp () => result.toString (),
152+ OrgSimpleTimestamp () => result.toString (),
153+ };
154+ expect (type, isNotEmpty);
155+ });
156+ });
111157 });
112158}
0 commit comments