@@ -19,6 +19,10 @@ const chai = require('chai');
1919const Long = require ( 'long' ) ;
2020const { RabinFingerprint64, INIT } = require ( '../../../../lib/serialization/compact/RabinFingerprint' ) ;
2121const { SchemaWriter } = require ( '../../../../lib/serialization/compact/SchemaWriter' ) ;
22+ const { Schema} = require ( '../../../../lib/serialization/compact/Schema' ) ;
23+ const { FieldDescriptor} = require ( '../../../../lib/serialization/generic_record/FieldDescriptor' ) ;
24+ const { FieldKind} = require ( '../../../../lib/serialization/generic_record/FieldKind' ) ;
25+
2226chai . should ( ) ;
2327
2428describe ( 'RabinFingerprintTest' , function ( ) {
@@ -88,4 +92,19 @@ describe('RabinFingerprintTest', function () {
8892 const schema = writer . build ( ) ;
8993 schema . schemaId . eq ( Long . fromString ( '3662264393229655598' ) ) . should . be . true ;
9094 } ) ;
95+
96+ it ( 'should compute the same fingerprint for equivalent schemas regardless of the field order' , function ( ) {
97+ const schema1 = new Schema ( 'my-schema' , [
98+ new FieldDescriptor ( 'field-1' , FieldKind . ARRAY_OF_DATE ) ,
99+ new FieldDescriptor ( 'field-2' , FieldKind . ARRAY_OF_DATE ) ,
100+ ] ) ;
101+ const fp1 = RabinFingerprint64 . ofSchema ( schema1 ) ;
102+
103+ const schema2 = new Schema ( 'my-schema' , [
104+ new FieldDescriptor ( 'field-2' , FieldKind . ARRAY_OF_DATE ) ,
105+ new FieldDescriptor ( 'field-1' , FieldKind . ARRAY_OF_DATE ) ,
106+ ] ) ;
107+ const fp2 = RabinFingerprint64 . ofSchema ( schema2 ) ;
108+ fp1 . eq ( fp2 ) . should . be . true ;
109+ } ) ;
91110} ) ;
0 commit comments