A few more tests

This commit is contained in:
Tony Garnock-Jones 2021-05-24 11:32:29 +02:00
parent a1fdddcf7b
commit 52be118dc7
1 changed files with 22 additions and 0 deletions

View File

@ -16,6 +16,9 @@ describe('checker', () => {
it('detects non-bijection for symbol field', () => {
expect(() => readSchema('version 1 . A = <a @x string symbol> .')).toThrow(/item 1 of fields of A/);
});
it('is OK with no names in simple seqof', () => {
expect(readSchema('version 1 . A = [string ...].')).not.toBeNull();
});
});
describe('extensible record', () => {
@ -38,4 +41,23 @@ describe('checker', () => {
.toThrow(/tail of fields of ExtensibleRecord/);
});
});
describe('duplicate bindings', () => {
it('complains about duplicates in tuples', () => {
expect(() => readSchema('version 1 . A = [@a string @a string].'))
.toThrow(/duplicate binding named "a" in item 1 of A/);
});
it('complains about duplicates in dicts', () => {
expect(() => readSchema('version 1 . A = { x: @a string , y: @a string }.'))
.toThrow(/duplicate binding named "a" in entry y in dictionary in A/);
});
it('complains about duplicates in tuple*s', () => {
expect(() => readSchema('version 1 . A = [@a string @b string @a int @rest any ...].'))
.toThrow(/duplicate binding named "a" in item 2 of A/);
});
it('complains about duplicates in tuple* tails', () => {
expect(() => readSchema('version 1 . A = [@a string @b string @c int @a any ...].'))
.toThrow(/duplicate binding named "a" in tail of A/);
});
});
});