Skip to content

Commit e0e4e94

Browse files
committed
resolve comments
1 parent a6505ce commit e0e4e94

File tree

2 files changed

+100
-18
lines changed

2 files changed

+100
-18
lines changed

packages/firestore/test/unit/index/firestore_index_value_writer.test.ts

Lines changed: 99 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@ import type { Value } from '../../../src/protos/firestore_proto_api';
2424
import { toTimestamp } from '../../../src/remote/serializer';
2525
import { JSON_SERIALIZER } from '../local/persistence_test_helpers';
2626

27+
import { compare } from './ordered_code_writer.test';
28+
2729
describe('Firestore Index Value Writer', () => {
28-
function compareIndexValues(
30+
function compareIndexEncodedValues(
2931
value1: Value,
3032
value2: Value,
3133
direction: IndexKind
32-
): void {
34+
): number {
3335
const encoder1 = new IndexByteEncoder();
3436
const encoder2 = new IndexByteEncoder();
3537
FirestoreIndexValueWriter.INSTANCE.writeIndexValue(
@@ -41,7 +43,8 @@ describe('Firestore Index Value Writer', () => {
4143
value2,
4244
encoder2.forKind(direction)
4345
);
44-
expect(encoder1.encodedBytes()).to.deep.equal(encoder2.encodedBytes());
46+
47+
return compare(encoder1.encodedBytes(), encoder2.encodedBytes());
4548
}
4649

4750
describe('can gracefully handle different format of timestamp', () => {
@@ -58,15 +61,31 @@ describe('Firestore Index Value Writer', () => {
5861
new Timestamp(1451730050, 850000000)
5962
)
6063
};
61-
compareIndexValues(value1, value2, IndexKind.ASCENDING);
62-
compareIndexValues(value1, value3, IndexKind.ASCENDING);
63-
compareIndexValues(value1, value4, IndexKind.ASCENDING);
64-
compareIndexValues(value1, value5, IndexKind.ASCENDING);
64+
expect(
65+
compareIndexEncodedValues(value1, value2, IndexKind.ASCENDING)
66+
).to.equal(0);
67+
expect(
68+
compareIndexEncodedValues(value1, value3, IndexKind.ASCENDING)
69+
).to.equal(0);
70+
expect(
71+
compareIndexEncodedValues(value1, value4, IndexKind.ASCENDING)
72+
).to.equal(0);
73+
expect(
74+
compareIndexEncodedValues(value1, value5, IndexKind.ASCENDING)
75+
).to.equal(0);
6576

66-
compareIndexValues(value1, value2, IndexKind.DESCENDING);
67-
compareIndexValues(value1, value3, IndexKind.DESCENDING);
68-
compareIndexValues(value1, value4, IndexKind.DESCENDING);
69-
compareIndexValues(value1, value5, IndexKind.DESCENDING);
77+
expect(
78+
compareIndexEncodedValues(value1, value2, IndexKind.DESCENDING)
79+
).to.equal(0);
80+
expect(
81+
compareIndexEncodedValues(value1, value3, IndexKind.DESCENDING)
82+
).to.equal(0);
83+
expect(
84+
compareIndexEncodedValues(value1, value4, IndexKind.DESCENDING)
85+
).to.equal(0);
86+
expect(
87+
compareIndexEncodedValues(value1, value5, IndexKind.DESCENDING)
88+
).to.equal(0);
7089
});
7190

7291
it('can handle timestamps with 0 nanoseconds', () => {
@@ -79,13 +98,76 @@ describe('Firestore Index Value Writer', () => {
7998
new Timestamp(1451730050, 0)
8099
)
81100
};
82-
compareIndexValues(value1, value2, IndexKind.ASCENDING);
83-
compareIndexValues(value1, value3, IndexKind.ASCENDING);
84-
compareIndexValues(value1, value4, IndexKind.ASCENDING);
101+
expect(
102+
compareIndexEncodedValues(value1, value2, IndexKind.ASCENDING)
103+
).to.equal(0);
104+
expect(
105+
compareIndexEncodedValues(value1, value3, IndexKind.ASCENDING)
106+
).to.equal(0);
107+
expect(
108+
compareIndexEncodedValues(value1, value4, IndexKind.ASCENDING)
109+
).to.equal(0);
110+
111+
expect(
112+
compareIndexEncodedValues(value1, value2, IndexKind.DESCENDING)
113+
).to.equal(0);
114+
expect(
115+
compareIndexEncodedValues(value1, value3, IndexKind.DESCENDING)
116+
).to.equal(0);
117+
expect(
118+
compareIndexEncodedValues(value1, value4, IndexKind.DESCENDING)
119+
).to.equal(0);
120+
});
121+
122+
it('can compare timestamps with different formats', () => {
123+
const value1 = { timestampValue: '2016-01-02T10:20:50Z' };
124+
const value2 = { timestampValue: '2016-01-02T10:20:50.000001Z' };
125+
const value3 = {
126+
timestampValue: { seconds: 1451730050, nanos: 999999999 }
127+
};
128+
const value4 = {
129+
timestampValue: toTimestamp(
130+
JSON_SERIALIZER,
131+
new Timestamp(1451730050, 1)
132+
)
133+
};
134+
expect(
135+
compareIndexEncodedValues(value1, value2, IndexKind.ASCENDING)
136+
).to.equal(-1);
137+
expect(
138+
compareIndexEncodedValues(value1, value3, IndexKind.ASCENDING)
139+
).to.equal(-1);
140+
expect(
141+
compareIndexEncodedValues(value1, value4, IndexKind.ASCENDING)
142+
).to.equal(-1);
143+
expect(
144+
compareIndexEncodedValues(value2, value3, IndexKind.ASCENDING)
145+
).to.equal(-1);
146+
expect(
147+
compareIndexEncodedValues(value2, value4, IndexKind.ASCENDING)
148+
).to.equal(1);
149+
expect(
150+
compareIndexEncodedValues(value3, value4, IndexKind.ASCENDING)
151+
).to.equal(1);
85152

86-
compareIndexValues(value1, value2, IndexKind.DESCENDING);
87-
compareIndexValues(value1, value3, IndexKind.DESCENDING);
88-
compareIndexValues(value1, value4, IndexKind.DESCENDING);
153+
expect(
154+
compareIndexEncodedValues(value1, value2, IndexKind.DESCENDING)
155+
).to.equal(1);
156+
expect(
157+
compareIndexEncodedValues(value1, value3, IndexKind.DESCENDING)
158+
).to.equal(1);
159+
expect(
160+
compareIndexEncodedValues(value1, value4, IndexKind.DESCENDING)
161+
).to.equal(1);
162+
expect(
163+
compareIndexEncodedValues(value2, value3, IndexKind.DESCENDING)
164+
).to.equal(1);
165+
expect(
166+
compareIndexEncodedValues(value2, value4, IndexKind.DESCENDING)
167+
).to.equal(-1);
168+
expect(
169+
compareIndexEncodedValues(value3, value4, IndexKind.DESCENDING)
170+
).to.equal(-1);
89171
});
90172
});
91173
});

packages/firestore/test/unit/index/ordered_code_writer.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ function fromHex(hexString: string): Uint8Array {
226226
return bytes;
227227
}
228228

229-
function compare(left: Uint8Array, right: Uint8Array): number {
229+
export function compare(left: Uint8Array, right: Uint8Array): number {
230230
for (let i = 0; i < Math.min(left.length, right.length); ++i) {
231231
if (left[i] < right[i]) {
232232
return -1;

0 commit comments

Comments
 (0)