@@ -17,3 +17,33 @@ test('equal lists (order-insensitive)', () => {
1717test ( 'nested structures compared key-wise' , ( ) => {
1818 expect ( resultsEqual ( { x : 1 } , { x : 1 } ) ) . toBe ( true ) ;
1919} ) ;
20+
21+ test ( 'expected Long matches FHIR R4 valueString encoding' , ( ) => {
22+ expect ( resultsEqual ( 1n , '1' ) ) . toBe ( true ) ;
23+ expect ( resultsEqual ( - 1n , '-1' ) ) . toBe ( true ) ;
24+ expect ( resultsEqual ( 0n , '0' ) ) . toBe ( true ) ;
25+ expect ( resultsEqual ( 9223372036854775807n , '9223372036854775807' ) ) . toBe ( true ) ;
26+ expect ( resultsEqual ( 1n , '2' ) ) . toBe ( false ) ;
27+ } ) ;
28+
29+ test ( 'expected Long matches bigint actuals but not numbers (valueInteger is not allowed)' , ( ) => {
30+ expect ( resultsEqual ( 1n , 1n ) ) . toBe ( true ) ;
31+ expect ( resultsEqual ( 1n , 2n ) ) . toBe ( false ) ;
32+ expect ( resultsEqual ( 1n , 1 ) ) . toBe ( false ) ;
33+ expect ( resultsEqual ( 1n , 1.5 ) ) . toBe ( false ) ;
34+ } ) ;
35+
36+ test ( 'expected Long rejects non-integer strings' , ( ) => {
37+ expect ( resultsEqual ( 1n , 'abc' ) ) . toBe ( false ) ;
38+ expect ( resultsEqual ( 1n , '1.5' ) ) . toBe ( false ) ;
39+ expect ( resultsEqual ( 0n , '' ) ) . toBe ( false ) ;
40+ expect ( resultsEqual ( 0n , ' 0 ' ) ) . toBe ( false ) ;
41+ expect ( resultsEqual ( 1n , null ) ) . toBe ( false ) ;
42+ expect ( resultsEqual ( 1n , undefined ) ) . toBe ( false ) ;
43+ } ) ;
44+
45+ test ( 'Long values compare inside lists and structures' , ( ) => {
46+ expect ( resultsEqual ( [ 1n , 2n ] , [ '1' , '2' ] ) ) . toBe ( true ) ;
47+ expect ( resultsEqual ( { x : 1n } , { x : '1' } ) ) . toBe ( true ) ;
48+ expect ( resultsEqual ( [ 1n , 2n ] , [ '1' , '3' ] ) ) . toBe ( false ) ;
49+ } ) ;
0 commit comments