Restructuring the tests

master
Paul Loyd 2017-11-05 02:40:46 +03:00
parent 7d8e9fbf64
commit 76ca89e500
34 changed files with 667 additions and 664 deletions

View File

@ -1,7 +1,7 @@
{
"name": "flow2avro",
"version": "0.1.0",
"description": "Generate avro schemes for flowtype definitions",
"description": "Generate avro schemas for flowtype definitions",
"author": "Paul Loyd <pavelko95@gmail.com>",
"license": "MIT",
"repository": {

View File

@ -9,34 +9,3 @@ interface Interface {
class Class {
a: number[];
}
// ###
[
{
type: 'record',
name: 'Type',
namespace: 'arrays',
fields: [{
name: 'a',
type: {type: 'array', items: 'double'},
}],
},
{
type: 'record',
name: 'Interface',
namespace: 'arrays',
fields: [{
name: 'a',
type: {type: 'array', items: 'double'},
}],
},
{
type: 'record',
name: 'Class',
namespace: 'arrays',
fields: [{
name: 'a',
type: {type: 'array', items: 'double'},
}],
},
]

31
tests/arrays.json Normal file
View File

@ -0,0 +1,31 @@
{
"schemas": [
{
"type": "record",
"name": "Type",
"namespace": "arrays",
"fields": [{
"name": "a",
"type": {"type": "array", "items": "double"}
}]
},
{
"type": "record",
"name": "Interface",
"namespace": "arrays",
"fields": [{
"name": "a",
"type": {"type": "array", "items": "double"}
}]
},
{
"type": "record",
"name": "Class",
"namespace": "arrays",
"fields": [{
"name": "a",
"type": {"type": "array", "items": "double"}
}]
}
]
}

View File

@ -7,24 +7,3 @@ type Y = {
};
type Z = string;
// ###
[
{
type: 'string',
name: 'Z',
namespace: 'disorder',
},
{
type: 'record',
name: 'Y',
namespace: 'disorder',
fields: [{name: 'z', type: 'Z'}],
},
{
type: 'record',
name: 'X',
namespace: 'disorder',
fields: [{name: 'y', type: 'Y'}],
},
]

21
tests/disorder.json Normal file
View File

@ -0,0 +1,21 @@
{
"schemas": [
{
"type": "string",
"name": "Z",
"namespace": "disorder"
},
{
"type": "record",
"name": "Y",
"namespace": "disorder",
"fields": [{"name": "z", "type": "Z"}]
},
{
"type": "record",
"name": "X",
"namespace": "disorder",
"fields": [{"name": "y", "type": "Y"}]
}
]
}

View File

@ -13,7 +13,7 @@ function filter(name) {
return true;
}
const match = part => name.indexOf(part) >= 0;
const match = part => name.includes(part);
const negate = process.argv[2] === '!';
const argv = process.argv.slice(negate ? 3 : 2);
@ -26,10 +26,10 @@ function run(name) {
console.log(`${title}...`);
const code = fs.readFileSync(name, 'utf8');
const {schemas: actual} = collect(name);
const expected = eval(code.split('// ###')[1]);
const actual = collect(name);
const expected = JSON.parse(fs.readFileSync(name + 'on', 'utf8'));
const delta = jsondiffpatch.diff(actual, expected);
const delta = jsondiffpatch.diff(actual.schemas, expected.schemas);
if (delta) {
jsondiffpatch.console.log(delta);
@ -46,26 +46,14 @@ function run(name) {
function main() {
process.chdir(__dirname);
const runner = path.basename(__filename);
const success = fs.readdirSync(__dirname)
.filter(name => path.extname(name) === '.js')
.filter(filter)
.reduce((success, name) => {
const ok = run(name);
const list = fs.readdirSync(__dirname)
.filter(fname => fname !== runner);
let success = true;
for (const name of list) {
if (!filter(name)) {
continue;
}
if (fs.lstatSync(name).isDirectory()) {
continue;
}
const ok = run(name);
success = success && ok;
}
return success && ok;
}, true);
process.exit(success ? 0 : 1);
}

View File

@ -9,34 +9,3 @@ interface Interface {
class Class {
a: 'one' | 'two';
}
// ###
[
{
type: 'record',
name: 'Type',
namespace: 'enums',
fields: [{
name: 'a',
type: {type: 'enum', symbols: ['one', 'two']},
}],
},
{
type: 'record',
name: 'Interface',
namespace: 'enums',
fields: [{
name: 'a',
type: {type: 'enum', symbols: ['one', 'two']},
}],
},
{
type: 'record',
name: 'Class',
namespace: 'enums',
fields: [{
name: 'a',
type: {type: 'enum', symbols: ['one', 'two']},
}],
},
]

31
tests/enums.json Normal file
View File

@ -0,0 +1,31 @@
{
"schemas": [
{
"type": "record",
"name": "Type",
"namespace": "enums",
"fields": [{
"name": "a",
"type": {"type": "enum", "symbols": ["one", "two"]}
}]
},
{
"type": "record",
"name": "Interface",
"namespace": "enums",
"fields": [{
"name": "a",
"type": {"type": "enum", "symbols": ["one", "two"]}
}]
},
{
"type": "record",
"name": "Class",
"namespace": "enums",
"fields": [{
"name": "a",
"type": {"type": "enum", "symbols": ["one", "two"]}
}]
}
]
}

View File

@ -21,77 +21,3 @@ type Y = {
k: T,
p: P,
};
// ###
[
{
type: 'record',
name: 'A',
namespace: 'externals.first',
fields: [{name: 'a', type: 'boolean'}],
},
{
type: 'record',
name: 'B',
namespace: 'externals.first',
fields: [{name: 'b', type: 'string'}],
},
{
type: 'record',
name: 'CC',
namespace: 'externals.first',
fields: [{name: 'c', type: 'double'}],
},
{
type: 'record',
name: 'D',
namespace: 'externals.first',
fields: [{name: 'd', type: 'double'}],
},
{
type: 'record',
name: 'N',
namespace: 'externals.second',
fields: [{name: 'n', type: 'boolean'}],
},
{
type: 'record',
name: 'M',
namespace: 'externals.second',
fields: [{name: 'm', type: 'string'}],
},
{
type: 'record',
name: 'KK',
namespace: 'externals.second',
fields: [{name: 'k', type: 'double'}],
},
{
type: 'record',
name: 'P',
namespace: 'externals.second',
fields: [{name: 'p', type: 'double'}],
},
{
type: 'record',
name: 'X',
namespace: 'externals',
fields: [
{name: 'a', type: 'externals.first.A'},
{name: 'b', type: 'externals.first.B'},
{name: 'c', type: 'externals.first.CC'},
{name: 'd', type: 'externals.first.D'},
],
},
{
type: 'record',
name: 'Y',
namespace: 'externals',
fields: [
{name: 'n', type: 'externals.second.N'},
{name: 'm', type: 'externals.second.M'},
{name: 'k', type: 'externals.second.KK'},
{name: 'p', type: 'externals.second.P'},
],
},
]

74
tests/externals.json Normal file
View File

@ -0,0 +1,74 @@
{
"schemas": [
{
"type": "record",
"name": "A",
"namespace": "externals.first",
"fields": [{"name": "a", "type": "boolean"}]
},
{
"type": "record",
"name": "B",
"namespace": "externals.first",
"fields": [{"name": "b", "type": "string"}]
},
{
"type": "record",
"name": "CC",
"namespace": "externals.first",
"fields": [{"name": "c", "type": "double"}]
},
{
"type": "record",
"name": "D",
"namespace": "externals.first",
"fields": [{"name": "d", "type": "double"}]
},
{
"type": "record",
"name": "N",
"namespace": "externals.second",
"fields": [{"name": "n", "type": "boolean"}]
},
{
"type": "record",
"name": "M",
"namespace": "externals.second",
"fields": [{"name": "m", "type": "string"}]
},
{
"type": "record",
"name": "KK",
"namespace": "externals.second",
"fields": [{"name": "k", "type": "double"}]
},
{
"type": "record",
"name": "P",
"namespace": "externals.second",
"fields": [{"name": "p", "type": "double"}]
},
{
"type": "record",
"name": "X",
"namespace": "externals",
"fields": [
{"name": "a", "type": "externals.first.A"},
{"name": "b", "type": "externals.first.B"},
{"name": "c", "type": "externals.first.CC"},
{"name": "d", "type": "externals.first.D"}
]
},
{
"type": "record",
"name": "Y",
"namespace": "externals",
"fields": [
{"name": "n", "type": "externals.second.N"},
{"name": "m", "type": "externals.second.M"},
{"name": "k", "type": "externals.second.KK"},
{"name": "p", "type": "externals.second.P"}
]
}
]
}

View File

@ -21,57 +21,3 @@ interface Y extends X {
interface Z extends Y {
z: boolean;
}
// ###
[
{
type: 'record',
name: 'A',
namespace: 'inheritance',
fields: [{name: 'a', type: 'double'}],
},
{
type: 'record',
name: 'B',
namespace: 'inheritance',
fields: [
{name: 'a', type: 'double'},
{name: 'b', type: 'string'},
],
},
{
type: 'record',
name: 'C',
namespace: 'inheritance',
fields: [
{name: 'a', type: 'double'},
{name: 'b', type: 'string'},
{name: 'c', type: 'boolean'},
],
},
{
type: 'record',
name: 'X',
namespace: 'inheritance',
fields: [{name: 'x', type: 'double'}],
},
{
type: 'record',
name: 'Y',
namespace: 'inheritance',
fields: [
{name: 'x', type: 'double'},
{name: 'y', type: 'string'},
],
},
{
type: 'record',
name: 'Z',
namespace: 'inheritance',
fields: [
{name: 'x', type: 'double'},
{name: 'y', type: 'string'},
{name: 'z', type: 'boolean'},
],
},
]

54
tests/inheritance.json Normal file
View File

@ -0,0 +1,54 @@
{
"schemas": [
{
"type": "record",
"name": "A",
"namespace": "inheritance",
"fields": [{"name": "a", "type": "double"}]
},
{
"type": "record",
"name": "B",
"namespace": "inheritance",
"fields": [
{"name": "a", "type": "double"},
{"name": "b", "type": "string"}
]
},
{
"type": "record",
"name": "C",
"namespace": "inheritance",
"fields": [
{"name": "a", "type": "double"},
{"name": "b", "type": "string"},
{"name": "c", "type": "boolean"}
]
},
{
"type": "record",
"name": "X",
"namespace": "inheritance",
"fields": [{"name": "x", "type": "double"}]
},
{
"type": "record",
"name": "Y",
"namespace": "inheritance",
"fields": [
{"name": "x", "type": "double"},
{"name": "y", "type": "string"}
]
},
{
"type": "record",
"name": "Z",
"namespace": "inheritance",
"fields": [
{"name": "x", "type": "double"},
{"name": "y", "type": "string"},
{"name": "z", "type": "boolean"}
]
}
]
}

View File

@ -11,69 +11,3 @@ type Y = {
class Z {
z: A & C;
}
// ###
[
{
type: 'record',
name: 'A',
namespace: 'intersections',
fields: [{name: 'a', type: 'double'}],
},
{
type: 'record',
name: 'B',
namespace: 'intersections',
fields: [{name: 'b', type: 'string'}],
},
{
type: 'record',
name: 'C',
namespace: 'intersections',
fields: [{name: 'c', type: 'boolean'}],
},
{
type: 'record',
name: 'X',
namespace: 'intersections',
fields: [
{name: 'a', type: 'double'},
{name: 'b', type: 'string'},
],
},
{
type: 'record',
name: '_A_B_C',
namespace: 'intersections',
fields: [
{name: 'a', type: 'double'},
{name: 'b', type: 'string'},
{name: 'c', type: 'boolean'},
],
},
{
type: 'record',
name: 'Y',
namespace: 'intersections',
fields: [
{name: 'y', type: '_A_B_C'},
],
},
{
type: 'record',
name: '_A_C',
namespace: 'intersections',
fields: [
{name: 'a', type: 'double'},
{name: 'c', type: 'boolean'},
],
},
{
type: 'record',
name: 'Z',
namespace: 'intersections',
fields: [
{name: 'z', type: '_A_C'},
],
},
]

66
tests/intersections.json Normal file
View File

@ -0,0 +1,66 @@
{
"schemas": [
{
"type": "record",
"name": "A",
"namespace": "intersections",
"fields": [{"name": "a", "type": "double"}]
},
{
"type": "record",
"name": "B",
"namespace": "intersections",
"fields": [{"name": "b", "type": "string"}]
},
{
"type": "record",
"name": "C",
"namespace": "intersections",
"fields": [{"name": "c", "type": "boolean"}]
},
{
"type": "record",
"name": "X",
"namespace": "intersections",
"fields": [
{"name": "a", "type": "double"},
{"name": "b", "type": "string"}
]
},
{
"type": "record",
"name": "_A_B_C",
"namespace": "intersections",
"fields": [
{"name": "a", "type": "double"},
{"name": "b", "type": "string"},
{"name": "c", "type": "boolean"}
]
},
{
"type": "record",
"name": "Y",
"namespace": "intersections",
"fields": [
{"name": "y", "type": "_A_B_C"}
]
},
{
"type": "record",
"name": "_A_C",
"namespace": "intersections",
"fields": [
{"name": "a", "type": "double"},
{"name": "c", "type": "boolean"}
]
},
{
"type": "record",
"name": "Z",
"namespace": "intersections",
"fields": [
{"name": "z", "type": "_A_C"}
]
}
]
}

View File

@ -5,19 +5,3 @@ type Type = {
interface Interface {
[string]: number;
}
// ###
[
{
type: 'map',
name: 'Type',
namespace: 'maps',
values: 'double',
},
{
type: 'map',
name: 'Interface',
namespace: 'maps',
values: 'double',
},
]

16
tests/maps.json Normal file
View File

@ -0,0 +1,16 @@
{
"schemas": [
{
"type": "map",
"name": "Type",
"namespace": "maps",
"values": "double"
},
{
"type": "map",
"name": "Interface",
"namespace": "maps",
"values": "double"
}
]
}

View File

@ -36,43 +36,3 @@ class Class {
/* $avro fixed 10 */
e: Buffer;
}
// ###
[
{
type: 'record',
name: 'Type',
namespace: 'pragmas',
fields: [
{name: 'a', type: 'int'},
{name: 'b', type: 'long'},
{name: 'c', type: 'float'},
{name: 'd', type: 'double'},
{name: 'e', type: {type: 'fixed', size: 10}},
],
},
{
type: 'record',
name: 'Interface',
namespace: 'pragmas',
fields: [
{name: 'a', type: 'int'},
{name: 'b', type: 'long'},
{name: 'c', type: 'float'},
{name: 'd', type: 'double'},
{name: 'e', type: {type: 'fixed', size: 10}},
],
},
{
type: 'record',
name: 'Class',
namespace: 'pragmas',
fields: [
{name: 'a', type: 'int'},
{name: 'b', type: 'long'},
{name: 'c', type: 'float'},
{name: 'd', type: 'double'},
{name: 'e', type: {type: 'fixed', size: 10}},
],
},
]

40
tests/pragmas.json Normal file
View File

@ -0,0 +1,40 @@
{
"schemas": [
{
"type": "record",
"name": "Type",
"namespace": "pragmas",
"fields": [
{"name": "a", "type": "int"},
{"name": "b", "type": "long"},
{"name": "c", "type": "float"},
{"name": "d", "type": "double"},
{"name": "e", "type": {"type": "fixed", "size": 10}}
]
},
{
"type": "record",
"name": "Interface",
"namespace": "pragmas",
"fields": [
{"name": "a", "type": "int"},
{"name": "b", "type": "long"},
{"name": "c", "type": "float"},
{"name": "d", "type": "double"},
{"name": "e", "type": {"type": "fixed", "size": 10}}
]
},
{
"type": "record",
"name": "Class",
"namespace": "pragmas",
"fields": [
{"name": "a", "type": "int"},
{"name": "b", "type": "long"},
{"name": "c", "type": "float"},
{"name": "d", "type": "double"},
{"name": "e", "type": {"type": "fixed", "size": 10}}
]
}
]
}

View File

@ -21,43 +21,3 @@ class Class {
d: null;
e: Buffer;
}
// ###
[
{
type: 'record',
name: 'Type',
namespace: 'primitives',
fields: [
{name: 'a', type: 'string'},
{name: 'b', type: 'double'},
{name: 'c', type: 'boolean'},
{name: 'd', type: 'null'},
{name: 'e', type: 'bytes'},
],
},
{
type: 'record',
name: 'Interface',
namespace: 'primitives',
fields: [
{name: 'a', type: 'string'},
{name: 'b', type: 'double'},
{name: 'c', type: 'boolean'},
{name: 'd', type: 'null'},
{name: 'e', type: 'bytes'},
],
},
{
type: 'record',
name: 'Class',
namespace: 'primitives',
fields: [
{name: 'a', type: 'string'},
{name: 'b', type: 'double'},
{name: 'c', type: 'boolean'},
{name: 'd', type: 'null'},
{name: 'e', type: 'bytes'},
],
},
]

40
tests/primitives.json Normal file
View File

@ -0,0 +1,40 @@
{
"schemas": [
{
"type": "record",
"name": "Type",
"namespace": "primitives",
"fields": [
{"name": "a", "type": "string"},
{"name": "b", "type": "double"},
{"name": "c", "type": "boolean"},
{"name": "d", "type": "null"},
{"name": "e", "type": "bytes"}
]
},
{
"type": "record",
"name": "Interface",
"namespace": "primitives",
"fields": [
{"name": "a", "type": "string"},
{"name": "b", "type": "double"},
{"name": "c", "type": "boolean"},
{"name": "d", "type": "null"},
{"name": "e", "type": "bytes"}
]
},
{
"type": "record",
"name": "Class",
"namespace": "primitives",
"fields": [
{"name": "a", "type": "string"},
{"name": "b", "type": "double"},
{"name": "c", "type": "boolean"},
{"name": "d", "type": "null"},
{"name": "e", "type": "bytes"}
]
}
]
}

View File

@ -17,42 +17,3 @@ class Class {
b: A[];
c: A<number>;
}
// ###
[
{
type: 'string',
name: 'A',
namespace: 'references',
},
{
type: 'record',
name: 'Type',
namespace: 'references',
fields: [
{name: 'a', type: 'A'},
{name: 'b', type: {type: 'array', items: 'A'}},
{name: 'c', type: 'A'},
],
},
{
type: 'record',
name: 'Interface',
namespace: 'references',
fields: [
{name: 'a', type: 'A'},
{name: 'b', type: {type: 'array', items: 'A'}},
{name: 'c', type: 'A'},
],
},
{
type: 'record',
name: 'Class',
namespace: 'references',
fields: [
{name: 'a', type: 'A'},
{name: 'b', type: {type: 'array', items: 'A'}},
{name: 'c', type: 'A'},
],
},
]

39
tests/references.json Normal file
View File

@ -0,0 +1,39 @@
{
"schemas": [
{
"type": "string",
"name": "A",
"namespace": "references"
},
{
"type": "record",
"name": "Type",
"namespace": "references",
"fields": [
{"name": "a", "type": "A"},
{"name": "b", "type": {"type": "array", "items": "A"}},
{"name": "c", "type": "A"}
]
},
{
"type": "record",
"name": "Interface",
"namespace": "references",
"fields": [
{"name": "a", "type": "A"},
{"name": "b", "type": {"type": "array", "items": "A"}},
{"name": "c", "type": "A"}
]
},
{
"type": "record",
"name": "Class",
"namespace": "references",
"fields": [
{"name": "a", "type": "A"},
{"name": "b", "type": {"type": "array", "items": "A"}},
{"name": "c", "type": "A"}
]
}
]
}

View File

@ -42,82 +42,3 @@ type Y = {
}
}
})();
// ###
[
{
type: 'string',
name: 'X',
namespace: 'scopes',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes',
fields: [{name: 'x', type: 'X'}],
},
{
type: 'double',
name: 'X',
namespace: 'scopes._1',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes._1',
fields: [{name: 'x', type: 'X'}],
},
{
type: 'string',
name: 'Z',
namespace: 'scopes._1',
},
{
type: 'record',
name: 'Test',
namespace: 'scopes._1',
fields: [],
},
{
type: 'boolean',
name: 'X',
namespace: 'scopes._2',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes._2',
fields: [
{name: 'x', type: 'X'},
{name: 'z', type: 'scopes._1.Z'},
],
},
{
type: 'double',
name: 'X',
namespace: 'scopes._3',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes._3',
fields: [
{name: 'x', type: 'X'},
{name: 'z', type: 'scopes._1.Z'},
],
},
{
type: 'string',
name: 'X',
namespace: 'scopes._4',
},
{
type: 'record',
name: 'Y',
namespace: 'scopes._4',
fields: [
{name: 'x', type: 'X'},
{name: 'z', type: 'scopes._1.Z'},
],
},
]

79
tests/scopes.json Normal file
View File

@ -0,0 +1,79 @@
{
"schemas": [
{
"type": "string",
"name": "X",
"namespace": "scopes"
},
{
"type": "record",
"name": "Y",
"namespace": "scopes",
"fields": [{"name": "x", "type": "X"}]
},
{
"type": "double",
"name": "X",
"namespace": "scopes._1"
},
{
"type": "record",
"name": "Y",
"namespace": "scopes._1",
"fields": [{"name": "x", "type": "X"}]
},
{
"type": "string",
"name": "Z",
"namespace": "scopes._1"
},
{
"type": "record",
"name": "Test",
"namespace": "scopes._1",
"fields": []
},
{
"type": "boolean",
"name": "X",
"namespace": "scopes._2"
},
{
"type": "record",
"name": "Y",
"namespace": "scopes._2",
"fields": [
{"name": "x", "type": "X"},
{"name": "z", "type": "scopes._1.Z"}
]
},
{
"type": "double",
"name": "X",
"namespace": "scopes._3"
},
{
"type": "record",
"name": "Y",
"namespace": "scopes._3",
"fields": [
{"name": "x", "type": "X"},
{"name": "z", "type": "scopes._1.Z"}
]
},
{
"type": "string",
"name": "X",
"namespace": "scopes._4"
},
{
"type": "record",
"name": "Y",
"namespace": "scopes._4",
"fields": [
{"name": "x", "type": "X"},
{"name": "z", "type": "scopes._1.Z"}
]
}
]
}

View File

@ -29,34 +29,3 @@ class Class {
baz: () => void;
}
// ###
[
{
type: 'record',
name: 'Type',
namespace: 'skipFunctions',
fields: [
{name: 'a', type: 'string'},
{name: 'b', type: 'double'},
],
},
{
type: 'record',
name: 'Interface',
namespace: 'skipFunctions',
fields: [
{name: 'a', type: 'string'},
{name: 'b', type: 'double'},
],
},
{
type: 'record',
name: 'Class',
namespace: 'skipFunctions',
fields: [
{name: 'a', type: 'string'},
{name: 'b', type: 'double'},
],
},
]

31
tests/skipFunctions.json Normal file
View File

@ -0,0 +1,31 @@
{
"schemas": [
{
"type": "record",
"name": "Type",
"namespace": "skipFunctions",
"fields": [
{"name": "a", "type": "string"},
{"name": "b", "type": "double"}
]
},
{
"type": "record",
"name": "Interface",
"namespace": "skipFunctions",
"fields": [
{"name": "a", "type": "string"},
{"name": "b", "type": "double"}
]
},
{
"type": "record",
"name": "Class",
"namespace": "skipFunctions",
"fields": [
{"name": "a", "type": "string"},
{"name": "b", "type": "double"}
]
}
]
}

View File

@ -5,19 +5,3 @@ class Test {
};
}
}
// ###
[
{
type: 'record',
name: 'Test',
namespace: 'typeInMethod',
fields: [],
},
{
type: 'record',
name: 'X',
namespace: 'typeInMethod._1',
fields: [{name: 't', type: 'typeInMethod.Test'}],
},
]

16
tests/typeInMethod.json Normal file
View File

@ -0,0 +1,16 @@
{
"schemas": [
{
"type": "record",
"name": "Test",
"namespace": "typeInMethod",
"fields": []
},
{
"type": "record",
"name": "X",
"namespace": "typeInMethod._1",
"fields": [{"name": "t", "type": "typeInMethod.Test"}]
}
]
}

View File

@ -12,43 +12,3 @@ class Class {
a: string | number;
b: ?string;
}
// ###
[
{
type: 'record',
name: 'Type',
namespace: 'unions',
fields: [{
name: 'a',
type: ['string', 'double'],
}, {
name: 'b',
type: ['null', 'string'],
}],
},
{
type: 'record',
name: 'Interface',
namespace: 'unions',
fields: [{
name: 'a',
type: ['string', 'double'],
}, {
name: 'b',
type: ['null', 'string'],
}],
},
{
type: 'record',
name: 'Class',
namespace: 'unions',
fields: [{
name: 'a',
type: ['string', 'double'],
}, {
name: 'b',
type: ['null', 'string'],
}],
},
]

49
tests/unions.json Normal file
View File

@ -0,0 +1,49 @@
{
"schemas": [
{
"type": "record",
"name": "Type",
"namespace": "unions",
"fields": [
{
"name": "a",
"type": ["string", "double"]
},
{
"name": "b",
"type": ["null", "string"]
}
]
},
{
"type": "record",
"name": "Interface",
"namespace": "unions",
"fields": [
{
"name": "a",
"type": ["string", "double"]
},
{
"name": "b",
"type": ["null", "string"]
}
]
},
{
"type": "record",
"name": "Class",
"namespace": "unions",
"fields": [
{
"name": "a",
"type": ["string", "double"]
},
{
"name": "b",
"type": ["null", "string"]
}
]
}
]
}

View File

@ -9,43 +9,3 @@ interface Interface {
class Class {
a: 'one' | 'two' | number;
}
// ###
[
{
type: 'record',
name: 'Type',
namespace: 'unionsAndEnums',
fields: [{
name: 'a',
type: [
'double',
{type: 'enum', symbols: ['one', 'two']},
],
}],
},
{
type: 'record',
name: 'Interface',
namespace: 'unionsAndEnums',
fields: [{
name: 'a',
type: [
'double',
{type: 'enum', symbols: ['one', 'two']},
],
}],
},
{
type: 'record',
name: 'Class',
namespace: 'unionsAndEnums',
fields: [{
name: 'a',
type: [
'double',
{type: 'enum', symbols: ['one', 'two']},
],
}],
},
]

40
tests/unionsAndEnums.json Normal file
View File

@ -0,0 +1,40 @@
{
"schemas": [
{
"type": "record",
"name": "Type",
"namespace": "unionsAndEnums",
"fields": [{
"name": "a",
"type": [
"double",
{"type": "enum", "symbols": ["one", "two"]}
]
}]
},
{
"type": "record",
"name": "Interface",
"namespace": "unionsAndEnums",
"fields": [{
"name": "a",
"type": [
"double",
{"type": "enum", "symbols": ["one", "two"]}
]
}]
},
{
"type": "record",
"name": "Class",
"namespace": "unionsAndEnums",
"fields": [{
"name": "a",
"type": [
"double",
{"type": "enum", "symbols": ["one", "two"]}
]
}]
}
]
}

View File

@ -9,25 +9,3 @@ interface Interface {
class Class {
a: 'one';
}
// ###
[
{
type: 'record',
name: 'Type',
namespace: 'valueAsType',
fields: [{name: 'a', type: {type: 'enum', symbols: ['one']}}],
},
{
type: 'record',
name: 'Interface',
namespace: 'valueAsType',
fields: [{name: 'a', type: {type: 'enum', symbols: ['one']}}],
},
{
type: 'record',
name: 'Class',
namespace: 'valueAsType',
fields: [{name: 'a', type: {type: 'enum', symbols: ['one']}}],
},
]

28
tests/valueAsType.json Normal file
View File

@ -0,0 +1,28 @@
{
"schemas": [
{
"type": "record",
"name": "Type",
"namespace": "valueAsType",
"fields": [
{"name": "a", "type": {"type": "enum", "symbols": ["one"]}}
]
},
{
"type": "record",
"name": "Interface",
"namespace": "valueAsType",
"fields": [
{"name": "a", "type": {"type": "enum", "symbols": ["one"]}}
]
},
{
"type": "record",
"name": "Class",
"namespace": "valueAsType",
"fields": [
{"name": "a", "type": {"type": "enum", "symbols": ["one"]}}
]
}
]
}