index.html revision c0464f9735ebc6b18978bc11f7a16beea7df84df
0N/A<script type="text/javascript" src="/build/dataschema/dataschema-debug.js" id="buildsrc"></script>
0N/A ARRAYASSERT = Y.ArrayAssert,
905N/A btnRun.set("disabled", false);
905N/A var testJSON = new Y.Test.Case({
0N/A metaFields: {top:"top", nested:"second.nested"}
0N/A data_out = Y.DataSchema.JSON.apply(schema, data_in);
0N/A resultFields: ["name", {key:"number", parser:Y.DataType.Number.parse}, "letter"]
0N/A data_out = Y.DataSchema.JSON.apply(schema, data_in);
0N/A metaFields: {metaTotal:"response['meta-total']", metaMessage:"response['data array'][1].response.message"},
0N/A "['customer.data']['alert(\'id\')']",
0N/Arequest: "orig request", response: { "meta-total": 3, "data array" : [{ position: "array.item.0", "response": { "i t e m s": [ { /* result 0 */ name: "Bob", "customer.data": { "alert('id')":10, "phone/email": "123-4567", "catch":true }, "array-pets": [ { /* pet 0 */ "name":"Brutus", "breed": "bulldog" }, { /* pet 1 */ "name":"Bobo", "breed": "bernese" } ] }, { /* result 1 */ name: "Fran", "customer.data": { "alert('id')":11, "phone/email": "234-5678", "catch":false}, "array-pets": [ { /* pet 0 */ "name":"Fido", "breed": "french poodle" } ] } ] } }, { position: "array.item.1", "response": { "message": { type: "xyz", error: false } } }], metaid: { id:1234, date: new Date() } } },
0N/A data_out = Y.DataSchema.JSON.apply(schema, data_in);
0N/A ASSERT.areSame(10, data_out.results[0]["['customer.data']['alert(\'id\')']"], "Expected first id.");
0N/A ASSERT.areSame("234-5678", data_out.results[1]["['customer.data']['phone/email']"], "Expected second phone/email.");
0N/A ASSERT.areSame("Fido", data_out.results[1]["['array-pets'][0].name"], "Expected nested array item data.");
0N/A data_out = Y.DataSchema.JSON.apply(schema, data_in);
0N/A data_out = Y.DataSchema.JSON.apply(schema, data_in);
0N/A data_out = Y.DataSchema.JSON.apply(schema, data_in);
0N/A var testXML = new Y.Test.Case({
0N/A metaFields: {rootatt:{parser:Y.DataType.Number.parse, locator:"/myroot/@rootatt"}, topnode:"//top", nestedatt:"//second/@nested"}
0N/A data_in = Y.DataType.XML.parse("<myroot rootatt='0'><top>topvalue</top><second nested='nestedvalue' /><item type='foo'><name>Abc</name><rank>0</rank></item><item type='bar'><name>Def</name><rank>1</rank></item><item type='bat'><name>Ghi</name><rank>2</rank></item></myroot>"),
0N/A data_out = Y.DataSchema.XML.apply(schema, data_in);
0N/A resultFields: [{key:"type", locator:"@type"}, {key:"rank", parser:Y.DataType.Number.parse}, "name"]
0N/A data_in = Y.DataType.XML.parse("<myroot><item type='foo'><name>Abc</name><rank>0</rank></item><item type='bar'><name>Def</name><rank>1</rank></item><item type='bat'><name>Ghi</name><rank>2</rank></item></myroot>"),
0N/A data_out = Y.DataSchema.XML.apply(schema, data_in);
0N/A metaFields: {rootatt:{parser:Y.DataType.Number.parse, locator:"/myroot/@rootatt"}, topnode:"//top", nestedatt:"//second/@nested"},
0N/A resultFields: [{key:"type", locator:"@type"}, {key:"rank", parser:Y.DataType.Number.parse}, "name", {key:"subnameatt", locator:"subitem/name/@type"}, {key:"age", locator:"subitem/age", parser:"number"}]
0N/A data_in = Y.DataType.XML.parse("<myroot rootatt='5'><top>topvalue</top><second nested='nestedsecond' /><allitems><livehere><item type='foo'><name type='nametype0'>Abc</name><rank>0</rank><subitem><name type='subnametype0'>subABC</name><age>10</age></subitem></item><item type='bar'><name type='nametype1'>Def</name><rank>1</rank><subitem><name type='subnametype1'>subDEF</name><age>11</age></subitem></item><item type='bat'><name type='nametype2'>Ghi</name><rank>2</rank><subitem><name type='subnametype2'>subGHI</name><age>12</age></subitem></item></livehere></allitems></myroot>"),
0N/A data_out = Y.DataSchema.XML.apply(schema, data_in);
0N/A ASSERT.areSame("subnametype0", data_out.results[0].subnameatt, "Expected first subitem name attribute.");
0N/A ASSERT.areSame("subnametype2", data_out.results[2].subnameatt, "Expected last subitemnameattribute.");
0N/A resultFields: ["type", {key:"rank", parser:Y.DataType.Number.parse}, "name"]
0N/A data_in = Y.DataType.XML.parse("<mismatch><item type='foo'><name>Abc</name><rank>1</rank></item></mismatchedtags>"),
0N/A data_out = Y.DataSchema.XML.apply(schema, data_in);
0N/A var testArray = new Y.Test.Case({
0N/A data_out = Y.DataSchema.Array.apply(schema, data_in);
0N/A data_out = Y.DataSchema.Array.apply(schema, data_in);
0N/A data_out = Y.DataSchema.Array.apply(schema, data_in);
0N/A data_out = Y.DataSchema.Array.apply(schema, data_in);
0N/A data_out = Y.DataSchema.Array.apply(schema, data_in);
0N/A data_out = Y.DataSchema.Array.apply(schema, data_in);
0N/A var testText = new Y.Test.Case({
0N/A data_out = Y.DataSchema.Text.apply(schema, data_in);
0N/A data_out = Y.DataSchema.Text.apply(schema, data_in);
0N/A data_out = Y.DataSchema.Text.apply(schema, data_in);
520N/A data_out = Y.DataSchema.Text.apply(schema, data_in);
0N/A Y.Test.Runner.add(testJSON);
0N/A Y.Test.Runner.add(testXML);
0N/A Y.Test.Runner.add(testArray);
0N/A Y.Test.Runner.add(testText);