diff options
Diffstat (limited to 'dom/webgpu/tests/cts/checkout/src/unittests/query_compare.spec.ts')
-rw-r--r-- | dom/webgpu/tests/cts/checkout/src/unittests/query_compare.spec.ts | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/dom/webgpu/tests/cts/checkout/src/unittests/query_compare.spec.ts b/dom/webgpu/tests/cts/checkout/src/unittests/query_compare.spec.ts new file mode 100644 index 0000000000..520af9e663 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/unittests/query_compare.spec.ts @@ -0,0 +1,133 @@ +export const description = ` +Tests for TestQuery comparison +`; + +import { makeTestGroup } from '../common/framework/test_group.js'; +import { compareQueries, Ordering } from '../common/internal/query/compare.js'; +import { + TestQuery, + TestQuerySingleCase, + TestQueryMultiFile, + TestQueryMultiTest, + TestQueryMultiCase, +} from '../common/internal/query/query.js'; + +import { UnitTest } from './unit_test.js'; + +class F extends UnitTest { + expectQ(a: TestQuery, exp: '<' | '=' | '>' | '!', b: TestQuery) { + const [expOrdering, expInvOrdering] = + exp === '<' + ? [Ordering.StrictSubset, Ordering.StrictSuperset] + : exp === '=' + ? [Ordering.Equal, Ordering.Equal] + : exp === '>' + ? [Ordering.StrictSuperset, Ordering.StrictSubset] + : [Ordering.Unordered, Ordering.Unordered]; + { + const act = compareQueries(a, b); + this.expect(act === expOrdering, `${a} ${b} got ${act}, exp ${expOrdering}`); + } + { + const act = compareQueries(a, b); + this.expect(act === expOrdering, `${b} ${a} got ${act}, exp ${expInvOrdering}`); + } + } + + expectWellOrdered(...qs: TestQuery[]) { + for (let i = 0; i < qs.length; ++i) { + this.expectQ(qs[i], '=', qs[i]); + for (let j = i + 1; j < qs.length; ++j) { + this.expectQ(qs[i], '>', qs[j]); + } + } + } + + expectUnordered(...qs: TestQuery[]) { + for (let i = 0; i < qs.length; ++i) { + this.expectQ(qs[i], '=', qs[i]); + for (let j = i + 1; j < qs.length; ++j) { + this.expectQ(qs[i], '!', qs[j]); + } + } + } +} + +export const g = makeTestGroup(F); + +// suite:* > suite:a,* > suite:a,b,* > suite:a,b:* +// suite:a,b:* > suite:a,b:c,* > suite:a,b:c,d,* > suite:a,b:c,d:* +// suite:a,b:c,d:* > suite:a,b:c,d:x=1;* > suite:a,b:c,d:x=1;y=2;* > suite:a,b:c,d:x=1;y=2 +// suite:a;* (unordered) suite:b;* +g.test('well_ordered').fn(t => { + t.expectWellOrdered( + new TestQueryMultiFile('suite', []), + new TestQueryMultiFile('suite', ['a']), + new TestQueryMultiFile('suite', ['a', 'b']), + new TestQueryMultiTest('suite', ['a', 'b'], []), + new TestQueryMultiTest('suite', ['a', 'b'], ['c']), + new TestQueryMultiTest('suite', ['a', 'b'], ['c', 'd']), + new TestQueryMultiCase('suite', ['a', 'b'], ['c', 'd'], {}), + new TestQueryMultiCase('suite', ['a', 'b'], ['c', 'd'], { x: 1 }), + new TestQueryMultiCase('suite', ['a', 'b'], ['c', 'd'], { x: 1, y: 2 }), + new TestQuerySingleCase('suite', ['a', 'b'], ['c', 'd'], { x: 1, y: 2 }) + ); + t.expectWellOrdered( + new TestQueryMultiFile('suite', []), + new TestQueryMultiFile('suite', ['a']), + new TestQueryMultiFile('suite', ['a', 'b']), + new TestQueryMultiTest('suite', ['a', 'b'], []), + new TestQueryMultiTest('suite', ['a', 'b'], ['c']), + new TestQueryMultiTest('suite', ['a', 'b'], ['c', 'd']), + new TestQueryMultiCase('suite', ['a', 'b'], ['c', 'd'], {}), + new TestQuerySingleCase('suite', ['a', 'b'], ['c', 'd'], {}) + ); +}); + +g.test('unordered').fn(t => { + t.expectUnordered( + new TestQueryMultiFile('suite', ['a']), // + new TestQueryMultiFile('suite', ['x']) + ); + t.expectUnordered( + new TestQueryMultiFile('suite', ['a', 'b']), + new TestQueryMultiFile('suite', ['a', 'x']) + ); + t.expectUnordered( + new TestQueryMultiTest('suite', ['a', 'b'], ['c']), + new TestQueryMultiTest('suite', ['a', 'b'], ['x']), + new TestQueryMultiTest('suite', ['a'], []), + new TestQueryMultiTest('suite', ['a', 'x'], []) + ); + t.expectUnordered( + new TestQueryMultiTest('suite', ['a', 'b'], ['c', 'd']), + new TestQueryMultiTest('suite', ['a', 'b'], ['c', 'x']), + new TestQueryMultiTest('suite', ['a'], []), + new TestQueryMultiTest('suite', ['a', 'x'], []) + ); + t.expectUnordered( + new TestQueryMultiTest('suite', ['a', 'b'], ['c', 'd']), + new TestQueryMultiTest('suite', ['a', 'b'], ['c', 'x']), + new TestQueryMultiTest('suite', ['a'], []), + new TestQueryMultiTest('suite', ['a', 'x'], ['c']) + ); + t.expectUnordered( + new TestQueryMultiCase('suite', ['a', 'b'], ['c', 'd'], { x: 1 }), + new TestQueryMultiCase('suite', ['a', 'b'], ['c', 'd'], { x: 9 }), + new TestQueryMultiCase('suite', ['a', 'b'], ['c'], { x: 9 }) + ); + t.expectUnordered( + new TestQueryMultiCase('suite', ['a', 'b'], ['c', 'd'], { x: 1, y: 2 }), + new TestQueryMultiCase('suite', ['a', 'b'], ['c', 'd'], { x: 1, y: 8 }), + new TestQueryMultiCase('suite', ['a', 'b'], ['c'], { x: 1, y: 8 }) + ); + t.expectUnordered( + new TestQuerySingleCase('suite', ['a', 'b'], ['c', 'd'], { x: 1, y: 2 }), + new TestQuerySingleCase('suite', ['a', 'b'], ['c', 'd'], { x: 1, y: 8 }), + new TestQuerySingleCase('suite', ['a', 'b'], ['c'], { x: 1, y: 8 }) + ); + t.expectUnordered( + new TestQuerySingleCase('suite1', ['bar', 'buzz', 'buzz'], ['zap'], {}), + new TestQueryMultiTest('suite1', ['bar'], []) + ); +}); |