Skip to content

Commit 9559e60

Browse files
committed
fix(json-ot): 🐛 make compose() function pass fuzzer tests
1 parent 8a80e77 commit 9559e60

File tree

4 files changed

+4
-3
lines changed

4 files changed

+4
-3
lines changed

src/json-ot/types/ot-string/StringType.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ export const compose = (op1: StringTypeOp, op2: StringTypeOp): StringTypeOp => {
204204
} else if (remaining >= (length1 - off1)) {
205205
const end = off2 + (length1 - off1);
206206
switch (typeof comp1) {
207-
case 'number': append(op3, isReversible ? [comp2[0].substring(off2, end)] : -length1); break;
207+
case 'number': append(op3, isReversible ? [comp2[0].substring(off2, end)] : -(length1 - off1)); break;
208208
case 'string': {
209209
off2 += (length1 - off1);
210210
break;

src/json-ot/types/ot-string/__tests__/StringOtFuzzer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {StringTypeOp} from "../types";
55

66
export class StringOtFuzzer extends Fuzzer {
77
genString(): string {
8-
return RandomJson.genString(2);
8+
return RandomJson.genString(20);
99
}
1010

1111
genOp(str: string): StringTypeOp {

src/json-ot/types/ot-string/__tests__/StringType.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ describe('compose()', () => {
106106
['fuzzer bug #2', 'Ai', [['A'], '#', -1], [-1], ''],
107107
['fuzzer bug #3', 'M}', ['!y1'], ["'/*s", 2, ',/@', -2, ['}']], "'/*s!y,/@"],
108108
['fuzzer bug #4', '8sL', [-2, 'w', ['L']], [['w']], ''],
109+
['fuzzer bug #5', '%V=', [2, ';'], ['3O"', 1, 'J', -2], '3O"%J='],
109110
];
110111

111112
describe('can compose', () => {

src/json-ot/types/ot-string/__tests__/fuzzer.compose.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {StringOtFuzzer} from './StringOtFuzzer';
44
const fuzzer = new StringOtFuzzer();
55

66
test('works', () => {
7-
for (let i = 0; i < 100000; i++) {
7+
for (let i = 0; i < 10000; i++) {
88
const str1 = fuzzer.genString();
99
const op1 = fuzzer.genOp(str1);
1010
const str2 = apply(str1, op1);

0 commit comments

Comments
 (0)