You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ko...@apache.org on 2014/11/28 10:22:19 UTC

[1/2] olingo-odata4-js git commit: [OLINGO-439] add scenario tests

Repository: olingo-odata4-js
Updated Branches:
  refs/heads/master 2d9599bf4 -> 49d9ecb5a


http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/49d9ecb5/odatajs/test/test-demo-scenario.js
----------------------------------------------------------------------
diff --git a/odatajs/test/test-demo-scenario.js b/odatajs/test/test-demo-scenario.js
index bcf399f..ab9cb99 100644
--- a/odatajs/test/test-demo-scenario.js
+++ b/odatajs/test/test-demo-scenario.js
@@ -18,25 +18,274 @@
  */
 
 var odatajs = require('./../src/index-node.js');
+var chai = require('chai');
+var assert = chai.assert;
 
-describe('TEST Scenarios', function() {
-    describe('Metadata', function() {
-        it('Metadata I', function () {
-
-          var oHeaders = {
-              'Accept': 'text/html,application/xhtml+xml,application/xml,application/json;odata.metadata=full',
-              "Odata-Version": "4.0",
-              "OData-MaxVersion": "4.0",
-              "Prefer": "odata.allow-entityreferences"
-          };
-          var metadataRequest =
-          {
-              headers: oHeaders,
-              requestUri: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata", 
-              data: null,
-          };
-          odatajs.oData.read(metadataRequest, metaDatasuccess, errorFunc,odatajs.oData.metadataHandler);
+var testDataJsonParserMetadataNone = [{
+  description: "Feed with metadata=none",
+  header:  "application/json;odata.metadata=none",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods",
+  input:   '{"value":[{"FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"c
 rs":{"type":"name","properties":{"name":"EPSG:4326"}}}},{"FoodID":1,"Name":"sugar","UnitPrice":0.2,"ServingSize":1,"MeasurementUnit":"tsp","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":4,"CaloriesPerServing":16,"IsAvailable":false,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"ffffffff-ffff-ffff-ffff-ffffffffffff","Weight":0.1,"AvailableUnits":0,"Packaging":{"Type":" ","Color":"BLUE","NumberPerPackage":-2147483648,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":-79228162514264337593543950335,"Height":-32768,"Width":-9223372036854775808,"Volume":-1.7976931348623157E+308}},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":2,"Name":"1 Chicken Egg","UnitPrice":0.55,"ServingSize":1,"MeasurementUnit":null,"ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":1,"CaloriesPerServing":70,"IsAvailable":true,"ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID":"00000000-0000-0000-0000-000000000000","Weight":0,"A
 vailableUnits":-128,"Packaging":{"Type":"18     - Carton","Color":" brown ","NumberPerPackage":0,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":null},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":3,"Name":"Brown Sugar","UnitPrice":1.6,"ServingSize":1,"MeasurementUnit":"TSP.","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":5,"CaloriesPerServing":16,"IsAvailable":true,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":4.5,"AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":4,"Name":"Cobb Salad","UnitPrice":1.99,"ServingSize":-1,"MeasurementUnit":"cups","ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":3,"CaloriesPerServing":5,"IsAvailable":true,"ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":5.674,"AvailableUnits":127,"Packaging":null,"Cooke
 dSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null,"Instructions":"1.) Open 2.) Eat","NumberOfIngredients":4}],"@odata.nextLink":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods?$skiptoken=4"}',
+  expected: {"value":[{"FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"c
 rs":{"type":"name","properties":{"name":"EPSG:4326"}}}},{"FoodID":1,"Name":"sugar","UnitPrice":0.2,"ServingSize":1,"MeasurementUnit":"tsp","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":4,"CaloriesPerServing":16,"IsAvailable":false,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"ffffffff-ffff-ffff-ffff-ffffffffffff","Weight":0.1,"AvailableUnits":0,"Packaging":{"Type":" ","Color":"BLUE","NumberPerPackage":-2147483648,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":-79228162514264337593543950335,"Height":-32768,"Width":-9223372036854775808,"Volume":-1.7976931348623157E+308}},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":2,"Name":"1 Chicken Egg","UnitPrice":0.55,"ServingSize":1,"MeasurementUnit":null,"ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":1,"CaloriesPerServing":70,"IsAvailable":true,"ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID":"00000000-0000-0000-0000-000000000000","Weight":0,"A
 vailableUnits":-128,"Packaging":{"Type":"18     - Carton","Color":" brown ","NumberPerPackage":0,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":null},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":3,"Name":"Brown Sugar","UnitPrice":1.6,"ServingSize":1,"MeasurementUnit":"TSP.","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":5,"CaloriesPerServing":16,"IsAvailable":true,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":4.5,"AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":4,"Name":"Cobb Salad","UnitPrice":1.99,"ServingSize":-1,"MeasurementUnit":"cups","ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":3,"CaloriesPerServing":5,"IsAvailable":true,"ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":5.674,"AvailableUnits":127,"Packaging":null,"Cooke
 dSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null,"Instructions":"1.) Open 2.) Eat","NumberOfIngredients":4}],"@odata.nextLink":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods?$skiptoken=4"}
+},{
+  description: "Entry with metadata=none",
+  header:  "application/json;odata.metadata=none",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)",
+  input:   '{"FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type
 ":"name","properties":{"name":"EPSG:4326"}}}}',
+  expected: {"FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type
 ":"name","properties":{"name":"EPSG:4326"}}}}
+},{
+  description: "Collection of Complex with metadata=none",
+  header:  "application/json;odata.metadata=none",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Providers",
+  input:   '{"value":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}]}',
+  expected: {"value":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}]}
+},{
+  description: "Collection of Simple with metadata=none",
+  header:  "application/json;odata.metadata=none",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/AlternativeNames",
+  input:   '{"value":["ground cereal","ground grain"]}',
+  expected: {"value":["ground cereal","ground grain"]}
+},{
+  description: "Collection Property with metadata=none",
+  header:  "application/json;odata.metadata=none",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Packaging",
+  input:   '{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}}',
+  expected: {"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}}
+},{
+  description: "Simple Property with metadata=none",
+  header:  "application/json;odata.metadata=none",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Name",
+  input:   '{"value":"flour"}',
+  expected: {"value":"flour"}
+}];
+
+var testDataJsonParserMetadataMinimal = [{
+  description: "Feed with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods","value":[{"FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"
 SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}},{"FoodID":1,"Name":"sugar","UnitPrice":0.2,"ServingSize":1,"MeasurementUnit":"tsp","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":4,"CaloriesPerServing":16,"IsAvailable":false,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"ffffffff-ffff-ffff-ffff-ffffffffffff","Weight":0.1,"AvailableUnits":0,"Packaging":{"Type":" ","Color":"BLUE","NumberPerPackage":-2147483648,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":-79228162514264337593543950335,"Height":-32768,"Width":-9223372036854775808,"Volume":-1.7976931348623157E+308}},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":2,"Name":"1 Chicken Egg","UnitPrice":0.55,"ServingSize":1,"MeasurementUnit":null,"ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":1,"CaloriesPerServing":70,"IsAvailable":true,"Ex
 pirationDate":"2000-12-29T00:00:00Z","ItemGUID":"00000000-0000-0000-0000-000000000000","Weight":0,"AvailableUnits":-128,"Packaging":{"Type":"18     - Carton","Color":" brown ","NumberPerPackage":0,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":null},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":3,"Name":"Brown Sugar","UnitPrice":1.6,"ServingSize":1,"MeasurementUnit":"TSP.","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":5,"CaloriesPerServing":16,"IsAvailable":true,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":4.5,"AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"@odata.type":"#DataJS.Tests.V4.PreparedFood","FoodID":4,"Name":"Cobb Salad","UnitPrice":1.99,"ServingSize":-1,"MeasurementUnit":"cups","ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":3,"CaloriesPerServing":5,"IsAvailable":true,"Ex
 pirationDate":"2000-12-29T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":5.674,"AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null,"Instructions":"1.) Open 2.) Eat","NumberOfIngredients":4}],"@odata.nextLink":"Foods?$skiptoken=4"}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods","value":[{"FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"
 SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}},{"FoodID":1,"Name":"sugar","UnitPrice":0.2,"ServingSize":1,"MeasurementUnit":"tsp","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":4,"CaloriesPerServing":16,"IsAvailable":false,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"ffffffff-ffff-ffff-ffff-ffffffffffff","Weight":0.1,"AvailableUnits":0,"Packaging":{"Type":" ","Color":"BLUE","NumberPerPackage":-2147483648,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":-79228162514264337593543950335,"Height":-32768,"Width":-9223372036854775808,"Volume":-1.7976931348623157E+308}},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":2,"Name":"1 Chicken Egg","UnitPrice":0.55,"ServingSize":1,"MeasurementUnit":null,"ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":1,"CaloriesPerServing":70,"IsAvailable":true,"Ex
 pirationDate":"2000-12-29T00:00:00Z","ItemGUID":"00000000-0000-0000-0000-000000000000","Weight":0,"AvailableUnits":-128,"Packaging":{"Type":"18     - Carton","Color":" brown ","NumberPerPackage":0,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":null},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":3,"Name":"Brown Sugar","UnitPrice":1.6,"ServingSize":1,"MeasurementUnit":"TSP.","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":5,"CaloriesPerServing":16,"IsAvailable":true,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":4.5,"AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"@odata.type":"#DataJS.Tests.V4.PreparedFood","FoodID":4,"Name":"Cobb Salad","UnitPrice":1.99,"ServingSize":-1,"MeasurementUnit":"cups","ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":3,"CaloriesPerServing":5,"IsAvailable":true,"Ex
 pirationDate":"2000-12-29T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":5.674,"AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null,"Instructions":"1.) Open 2.) Eat","NumberOfIngredients":4}],"@odata.nextLink":"Foods?$skiptoken=4"}
+},{
+  description: "Entry with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods/$entity","FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"Sp
 atialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods/$entity","FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"Sp
 atialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}}
+},{
+  description: "Collection of Complex with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Providers",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Providers","value":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}]}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Providers","value":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}]}
+},{
+  description: "Collection of Simple with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/AlternativeNames",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/AlternativeNames","value":["ground cereal","ground grain"]}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/AlternativeNames","value":["ground cereal","ground grain"]}
+},{
+  description: "Collection Property with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Packaging",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Packaging","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Packaging","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}}
+},{
+  description: "Simple Property with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Name",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Name","value":"flour"}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Name","value":"flour"}
+}];
+
+
+var testDataJsonParserMetadataMinimalToFull = [{
+  description: "Feed with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods","value":[{"FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"
 SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}},{"FoodID":1,"Name":"sugar","UnitPrice":0.2,"ServingSize":1,"MeasurementUnit":"tsp","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":4,"CaloriesPerServing":16,"IsAvailable":false,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"ffffffff-ffff-ffff-ffff-ffffffffffff","Weight":0.1,"AvailableUnits":0,"Packaging":{"Type":" ","Color":"BLUE","NumberPerPackage":-2147483648,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":-79228162514264337593543950335,"Height":-32768,"Width":-9223372036854775808,"Volume":-1.7976931348623157E+308}},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":2,"Name":"1 Chicken Egg","UnitPrice":0.55,"ServingSize":1,"MeasurementUnit":null,"ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":1,"CaloriesPerServing":70,"IsAvailable":true,"Ex
 pirationDate":"2000-12-29T00:00:00Z","ItemGUID":"00000000-0000-0000-0000-000000000000","Weight":0,"AvailableUnits":-128,"Packaging":{"Type":"18     - Carton","Color":" brown ","NumberPerPackage":0,"RequiresRefridgeration":true,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":null},"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"FoodID":3,"Name":"Brown Sugar","UnitPrice":1.6,"ServingSize":1,"MeasurementUnit":"TSP.","ProteinGrams":0,"FatGrams":0,"CarbohydrateGrams":5,"CaloriesPerServing":16,"IsAvailable":true,"ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":4.5,"AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null},{"@odata.type":"#DataJS.Tests.V4.PreparedFood","FoodID":4,"Name":"Cobb Salad","UnitPrice":1.99,"ServingSize":-1,"MeasurementUnit":"cups","ProteinGrams":6,"FatGrams":1,"CarbohydrateGrams":3,"CaloriesPerServing":5,"IsAvailable":true,"Ex
 pirationDate":"2000-12-29T00:00:00Z","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight":5.674,"AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames":[],"Providers":[],"SpatialData":null,"Instructions":"1.) Open 2.) Eat","NumberOfIngredients":4}],"@odata.nextLink":"Foods?$skiptoken=4"}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods","value":[{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)","@odata.editLink":"Foods(0)","FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams@odata.type":"#Byte","ProteinGrams":3,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight@odata.type":"#Single","Weight":10,"AvailableUnits@odata.type":"#SByte","AvailableUnits":1,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration
 ":false,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":7.922816251426434e+28,"Height@odata.type":"#Int16","Height":32767,"Width@odata.type":"#Int64","Width":9223372036854776000,"Volume":1.7976931348623157e+308,"Volume@odata.type":"#Int32"},"Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"},"CookedSize":{"@odata.type":"#DataJS.Tests.V4.CookedDimensions","Length@odata.type":"#Decimal","Length":2,"Height@odata.type":"#Int16","Height":1,"Width@odata.type":"#Int64","Width":3,"Volume":6,"Volume@odata.type":"#Int32"},"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":["ground cereal","ground grain"],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Flour Provider","Aliases@odata.type":"#Collection(Str
 ing)","Aliases":["fp1","flour provider1"],"Details":{"@odata.type":"#DataJS.Tests.V4.ProviderDetails","Telephone":"555-555-555","PreferredCode":1001,"Telephone@odata.type":"#String","PreferredCode@odata.type":"#Int32"},"Name@odata.type":"#String"},{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Ground Grains","Aliases@odata.type":"#Collection(String)","Aliases":[],"Details":null,"Name@odata.type":"#String"}],"SpatialData@odata.type":"#GeometryCollection","SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5,5],"type@odata.type":"#String"}],"crs":{"type":"name","properties":{"name":"EPSG:4326","name@odata.type":"#String"},"type@odata.type":"#String"},"type@odata.type":"#String"},"Category@odata.navigationLink":"Foods(0)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"},{"@odata.typ
 e":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(1)","@odata.editLink":"Foods(1)","FoodID":1,"Name":"sugar","UnitPrice":0.2,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"tsp","ProteinGrams@odata.type":"#Byte","ProteinGrams":0,"FatGrams@odata.type":"#Int16","FatGrams":0,"CarbohydrateGrams":4,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":16,"IsAvailable":false,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"ffffffff-ffff-ffff-ffff-ffffffffffff","Weight@odata.type":"#Single","Weight":0.1,"AvailableUnits@odata.type":"#SByte","AvailableUnits":0,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":" ","Color":"BLUE","NumberPerPackage":-2147483648,"RequiresRefridgeration":true,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.
 Dimensions","Length@odata.type":"#Decimal","Length":-7.922816251426434e+28,"Height@odata.type":"#Int16","Height":-32768,"Width@odata.type":"#Int64","Width":-9223372036854776000,"Volume":-1.7976931348623157e+308,"Volume@odata.type":"#Int32"},"Type@odata.type":"#String","Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"},"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Category@odata.navigationLink":"Foods(1)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"},{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(2)","@odata.editLink":"Foods(2)","FoodID"
 :2,"Name":"1 Chicken Egg","UnitPrice":0.55,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":null,"ProteinGrams@odata.type":"#Byte","ProteinGrams":6,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":1,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":70,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"00000000-0000-0000-0000-000000000000","Weight@odata.type":"#Single","Weight":0,"AvailableUnits@odata.type":"#SByte","AvailableUnits":-128,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":"18     - Carton","Color":" brown ","NumberPerPackage":0,"RequiresRefridgeration":true,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":null,"Type@odata.type":"#String","Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"},"CookedSize":null,"Al
 ternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Category@odata.navigationLink":"Foods(2)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"},{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(3)","@odata.editLink":"Foods(3)","FoodID":3,"Name":"Brown Sugar","UnitPrice":1.6,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"TSP.","ProteinGrams@odata.type":"#Byte","ProteinGrams":0,"FatGrams@odata.type":"#Int16","FatGrams":0,"CarbohydrateGrams":5,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":16,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":
 "01234567-89ab-cdef-0123-456789abcdef","Weight@odata.type":"#Single","Weight":4.5,"AvailableUnits@odata.type":"#SByte","AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Category@odata.navigationLink":"Foods(3)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"},{"@odata.type":"#DataJS.Tests.V4.PreparedFood","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(4)","@odata.editLink":"Foods(4)/DataJS.Tests.V4.PreparedFood","FoodID":4,"Name":"Cobb Salad","UnitPrice":1.99,"ServingSize@odata.type":"#Decimal","ServingSize":-1,"MeasurementUnit":"cups","ProteinGrams@odata.type":"#Byte","ProteinGrams":6,"FatGrams@odata.type":
 "#Int16","FatGrams":1,"CarbohydrateGrams":3,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":5,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight@odata.type":"#Single","Weight":5.674,"AvailableUnits@odata.type":"#SByte","AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Instructions":"1.) Open 2.) Eat","NumberOfIngredients@odata.type":"#Single","NumberOfIngredients":4,"Category@odata.navigationLink":"Foods(4)/DataJS.Tests.V4.PreparedFood/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean","Instru
 ctions@odata.type":"#String"}],"@odata.nextLink":"Foods?$skiptoken=4"}
+},{
+  description: "Entry with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods/$entity","FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams":3,"FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight":10,"AvailableUnits":1,"Packaging":{"Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"Length":2,"Height":1,"Width":3,"Volume":6.0},"AlternativeNames":["ground cereal","ground grain"],"Providers":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}],"Sp
 atialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods/$entity","@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)","@odata.editLink":"Foods(0)","FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams@odata.type":"#Byte","ProteinGrams":3,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight@odata.type":"#Single","Weight":10,"AvailableUnits@odata.type":"#SByte","AvailableUnits":1,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":
 false,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":7.922816251426434e+28,"Height@odata.type":"#Int16","Height":32767,"Width@odata.type":"#Int64","Width":9223372036854776000,"Volume":1.7976931348623157e+308,"Volume@odata.type":"#Int32"},"Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"},"CookedSize":{"@odata.type":"#DataJS.Tests.V4.CookedDimensions","Length@odata.type":"#Decimal","Length":2,"Height@odata.type":"#Int16","Height":1,"Width@odata.type":"#Int64","Width":3,"Volume":6,"Volume@odata.type":"#Int32"},"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":["ground cereal","ground grain"],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Flour Provider","Aliases@odata.type":"#Collection(Strin
 g)","Aliases":["fp1","flour provider1"],"Details":{"@odata.type":"#DataJS.Tests.V4.ProviderDetails","Telephone":"555-555-555","PreferredCode":1001,"Telephone@odata.type":"#String","PreferredCode@odata.type":"#Int32"},"Name@odata.type":"#String"},{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Ground Grains","Aliases@odata.type":"#Collection(String)","Aliases":[],"Details":null,"Name@odata.type":"#String"}],"SpatialData@odata.type":"#GeometryCollection","SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5,5],"type@odata.type":"#String"}],"crs":{"type":"name","properties":{"name":"EPSG:4326","name@odata.type":"#String"},"type@odata.type":"#String"},"type@odata.type":"#String"},"Category@odata.navigationLink":"Foods(0)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"}
+},{
+  description: "Collection of Complex with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Providers",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Providers","value":[{"Name":"Flour Provider","Aliases":["fp1","flour provider1"],"Details":{"Telephone":"555-555-555","PreferredCode":1001}},{"Name":"Ground Grains","Aliases":[],"Details":null}]}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Providers","@odata.type":"#Collection(DataJS.Tests.V4.Provider)","value":[{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Flour Provider","Aliases@odata.type":"#Collection(String)","Aliases":["fp1","flour provider1"],"Details":{"@odata.type":"#DataJS.Tests.V4.ProviderDetails","Telephone":"555-555-555","PreferredCode":1001,"Telephone@odata.type":"#String","PreferredCode@odata.type":"#Int32"},"Name@odata.type":"#String"},{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Ground Grains","Aliases@odata.type":"#Collection(String)","Aliases":[],"Details":null,"Name@odata.type":"#String"}]}
+},{
+  description: "Collection of Simple with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/AlternativeNames",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/AlternativeNames","value":["ground cereal","ground grain"]}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/AlternativeNames","@odata.type":"#Collection(String)","value":["ground cereal","ground grain"]}
+},{
+  description: "Collection Property with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Packaging",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Packaging","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"Length":79228162514264337593543950335,"Height":32767,"Width":9223372036854775807,"Volume":1.7976931348623157E+308}}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Packaging","@odata.type":"#DataJS.Tests.V4.Package","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":7.922816251426434e+28,"Height@odata.type":"#Int16","Height":32767,"Width@odata.type":"#Int64","Width":9223372036854776000,"Volume":1.7976931348623157e+308,"Volume@odata.type":"#Int32"},"Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"}
+},{
+  description: "Simple Property with metadata=minimal",
+  header:  "application/json;odata.metadata=minimal",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Name",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Name","value":"flour"}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Name","value":"flour","value@odata.type":"#String"}
+}];
+
+
+var testDataJsonParserMetadataFull = [{
+  description: "Feed with metadata=full",
+  header:  "application/json;odata.metadata=full",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods","value":[{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)","@odata.editLink":"Foods(0)","FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams@odata.type":"#Byte","ProteinGrams":3,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight@odata.type":"#Single","Weight":10,"AvailableUnits@odata.type":"#SByte","AvailableUnits":1,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration
 ":false,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":79228162514264337593543950335,"Height@odata.type":"#Int16","Height":32767,"Width@odata.type":"#Int64","Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"@odata.type":"#DataJS.Tests.V4.CookedDimensions","Length@odata.type":"#Decimal","Length":2,"Height@odata.type":"#Int16","Height":1,"Width@odata.type":"#Int64","Width":3,"Volume":6.0},"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":["ground cereal","ground grain"],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Flour Provider","Aliases@odata.type":"#Collection(String)","Aliases":["fp1","flour provider1"],"Details":{"@odata.type":"#DataJS.Tests.V4.ProviderDetails","Telephone":"555-555-555","PreferredCode":1001}},{"@odata.typ
 e":"#DataJS.Tests.V4.Provider","Name":"Ground Grains","Aliases@odata.type":"#Collection(String)","Aliases":[],"Details":null}],"SpatialData@odata.type":"#GeometryCollection","SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}},"Category@odata.navigationLink":"Foods(0)/Category"},{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(1)","@odata.editLink":"Foods(1)","FoodID":1,"Name":"sugar","UnitPrice":0.2,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"tsp","ProteinGrams@odata.type":"#Byte","ProteinGrams":0,"FatGrams@odata.type":"#Int16","FatGrams":0,"CarbohydrateGrams":4,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":16,"IsAvailable":false,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"ffffffff-f
 fff-ffff-ffff-ffffffffffff","Weight@odata.type":"#Single","Weight":0.1,"AvailableUnits@odata.type":"#SByte","AvailableUnits":0,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":" ","Color":"BLUE","NumberPerPackage":-2147483648,"RequiresRefridgeration":true,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":-79228162514264337593543950335,"Height@odata.type":"#Int16","Height":-32768,"Width@odata.type":"#Int64","Width":-9223372036854775808,"Volume":-1.7976931348623157E+308}},"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Category@odata.navigationLink":"Foods(1)/Category"},{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(2)","@odata.edit
 Link":"Foods(2)","FoodID":2,"Name":"1 Chicken Egg","UnitPrice":0.55,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":null,"ProteinGrams@odata.type":"#Byte","ProteinGrams":6,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":1,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":70,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"00000000-0000-0000-0000-000000000000","Weight@odata.type":"#Single","Weight":0,"AvailableUnits@odata.type":"#SByte","AvailableUnits":-128,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":"18     - Carton","Color":" brown ","NumberPerPackage":0,"RequiresRefridgeration":true,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":null},"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Test
 s.V4.Provider)","Providers":[],"SpatialData":null,"Category@odata.navigationLink":"Foods(2)/Category"},{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(3)","@odata.editLink":"Foods(3)","FoodID":3,"Name":"Brown Sugar","UnitPrice":1.6,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"TSP.","ProteinGrams@odata.type":"#Byte","ProteinGrams":0,"FatGrams@odata.type":"#Int16","FatGrams":0,"CarbohydrateGrams":5,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":16,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight@odata.type":"#Single","Weight":4.5,"AvailableUnits@odata.type":"#SByte","AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(
 DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Category@odata.navigationLink":"Foods(3)/Category"},{"@odata.type":"#DataJS.Tests.V4.PreparedFood","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(4)","@odata.editLink":"Foods(4)/DataJS.Tests.V4.PreparedFood","FoodID":4,"Name":"Cobb Salad","UnitPrice":1.99,"ServingSize@odata.type":"#Decimal","ServingSize":-1,"MeasurementUnit":"cups","ProteinGrams@odata.type":"#Byte","ProteinGrams":6,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":3,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":5,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight@odata.type":"#Single","Weight":5.674,"AvailableUnits@odata.type":"#SByte","AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","Alterna
 tiveNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Instructions":"1.) Open 2.) Eat","NumberOfIngredients@odata.type":"#Single","NumberOfIngredients":4,"Category@odata.navigationLink":"Foods(4)/DataJS.Tests.V4.PreparedFood/Category"}],"@odata.nextLink":"Foods?$skiptoken=4"}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods","value":[{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)","@odata.editLink":"Foods(0)","FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams@odata.type":"#Byte","ProteinGrams":3,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight@odata.type":"#Single","Weight":10,"AvailableUnits@odata.type":"#SByte","AvailableUnits":1,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration
 ":false,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":7.922816251426434e+28,"Height@odata.type":"#Int16","Height":32767,"Width@odata.type":"#Int64","Width":9223372036854776000,"Volume":1.7976931348623157e+308,"Volume@odata.type":"#Int32"},"Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"},"CookedSize":{"@odata.type":"#DataJS.Tests.V4.CookedDimensions","Length@odata.type":"#Decimal","Length":2,"Height@odata.type":"#Int16","Height":1,"Width@odata.type":"#Int64","Width":3,"Volume":6,"Volume@odata.type":"#Int32"},"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":["ground cereal","ground grain"],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Flour Provider","Aliases@odata.type":"#Collection(Str
 ing)","Aliases":["fp1","flour provider1"],"Details":{"@odata.type":"#DataJS.Tests.V4.ProviderDetails","Telephone":"555-555-555","PreferredCode":1001,"Telephone@odata.type":"#String","PreferredCode@odata.type":"#Int32"},"Name@odata.type":"#String"},{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Ground Grains","Aliases@odata.type":"#Collection(String)","Aliases":[],"Details":null,"Name@odata.type":"#String"}],"SpatialData@odata.type":"#GeometryCollection","SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5,5],"type@odata.type":"#String"}],"crs":{"type":"name","properties":{"name":"EPSG:4326","name@odata.type":"#String"},"type@odata.type":"#String"},"type@odata.type":"#String"},"Category@odata.navigationLink":"Foods(0)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"},{"@odata.typ
 e":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(1)","@odata.editLink":"Foods(1)","FoodID":1,"Name":"sugar","UnitPrice":0.2,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"tsp","ProteinGrams@odata.type":"#Byte","ProteinGrams":0,"FatGrams@odata.type":"#Int16","FatGrams":0,"CarbohydrateGrams":4,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":16,"IsAvailable":false,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"ffffffff-ffff-ffff-ffff-ffffffffffff","Weight@odata.type":"#Single","Weight":0.1,"AvailableUnits@odata.type":"#SByte","AvailableUnits":0,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":" ","Color":"BLUE","NumberPerPackage":-2147483648,"RequiresRefridgeration":true,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.
 Dimensions","Length@odata.type":"#Decimal","Length":-7.922816251426434e+28,"Height@odata.type":"#Int16","Height":-32768,"Width@odata.type":"#Int64","Width":-9223372036854776000,"Volume":-1.7976931348623157e+308,"Volume@odata.type":"#Int32"},"Type@odata.type":"#String","Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"},"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Category@odata.navigationLink":"Foods(1)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"},{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(2)","@odata.editLink":"Foods(2)","FoodID"
 :2,"Name":"1 Chicken Egg","UnitPrice":0.55,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":null,"ProteinGrams@odata.type":"#Byte","ProteinGrams":6,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":1,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":70,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"00000000-0000-0000-0000-000000000000","Weight@odata.type":"#Single","Weight":0,"AvailableUnits@odata.type":"#SByte","AvailableUnits":-128,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":"18     - Carton","Color":" brown ","NumberPerPackage":0,"RequiresRefridgeration":true,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":null,"Type@odata.type":"#String","Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"},"CookedSize":null,"Al
 ternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Category@odata.navigationLink":"Foods(2)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"},{"@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(3)","@odata.editLink":"Foods(3)","FoodID":3,"Name":"Brown Sugar","UnitPrice":1.6,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"TSP.","ProteinGrams@odata.type":"#Byte","ProteinGrams":0,"FatGrams@odata.type":"#Int16","FatGrams":0,"CarbohydrateGrams":5,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":16,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2011-12-28T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":
 "01234567-89ab-cdef-0123-456789abcdef","Weight@odata.type":"#Single","Weight":4.5,"AvailableUnits@odata.type":"#SByte","AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Category@odata.navigationLink":"Foods(3)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"},{"@odata.type":"#DataJS.Tests.V4.PreparedFood","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(4)","@odata.editLink":"Foods(4)/DataJS.Tests.V4.PreparedFood","FoodID":4,"Name":"Cobb Salad","UnitPrice":1.99,"ServingSize@odata.type":"#Decimal","ServingSize":-1,"MeasurementUnit":"cups","ProteinGrams@odata.type":"#Byte","ProteinGrams":6,"FatGrams@odata.type":
 "#Int16","FatGrams":1,"CarbohydrateGrams":3,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":5,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2000-12-29T00:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"01234567-89ab-cdef-0123-456789abcdef","Weight@odata.type":"#Single","Weight":5.674,"AvailableUnits@odata.type":"#SByte","AvailableUnits":127,"Packaging":null,"CookedSize":null,"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":[],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[],"SpatialData":null,"Instructions":"1.) Open 2.) Eat","NumberOfIngredients@odata.type":"#Single","NumberOfIngredients":4,"Category@odata.navigationLink":"Foods(4)/DataJS.Tests.V4.PreparedFood/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean","Instru
 ctions@odata.type":"#String"}],"@odata.nextLink":"Foods?$skiptoken=4"}
+},{
+  description: "Entry with metadata=full",
+  header:  "application/json;odata.metadata=full",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods/$entity","@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)","@odata.editLink":"Foods(0)","FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams@odata.type":"#Byte","ProteinGrams":3,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight@odata.type":"#Single","Weight":10,"AvailableUnits@odata.type":"#SByte","AvailableUnits":1,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":
 false,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":79228162514264337593543950335,"Height@odata.type":"#Int16","Height":32767,"Width@odata.type":"#Int64","Width":9223372036854775807,"Volume":1.7976931348623157E+308}},"CookedSize":{"@odata.type":"#DataJS.Tests.V4.CookedDimensions","Length@odata.type":"#Decimal","Length":2,"Height@odata.type":"#Int16","Height":1,"Width@odata.type":"#Int64","Width":3,"Volume":6.0},"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":["ground cereal","ground grain"],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Flour Provider","Aliases@odata.type":"#Collection(String)","Aliases":["fp1","flour provider1"],"Details":{"@odata.type":"#DataJS.Tests.V4.ProviderDetails","Telephone":"555-555-555","PreferredCode":1001}},{"@odata.type"
 :"#DataJS.Tests.V4.Provider","Name":"Ground Grains","Aliases@odata.type":"#Collection(String)","Aliases":[],"Details":null}],"SpatialData@odata.type":"#GeometryCollection","SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5.0,5.0]}],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}},"Category@odata.navigationLink":"Foods(0)/Category"}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods/$entity","@odata.type":"#DataJS.Tests.V4.Food","@odata.id":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)","@odata.editLink":"Foods(0)","FoodID":0,"Name":"flour","UnitPrice":0.19999,"ServingSize@odata.type":"#Decimal","ServingSize":1,"MeasurementUnit":"Cup","ProteinGrams@odata.type":"#Byte","ProteinGrams":3,"FatGrams@odata.type":"#Int16","FatGrams":1,"CarbohydrateGrams":20,"CaloriesPerServing@odata.type":"#Int64","CaloriesPerServing":140,"IsAvailable":true,"ExpirationDate@odata.type":"#DateTimeOffset","ExpirationDate":"2010-12-25T12:00:00Z","ItemGUID@odata.type":"#Guid","ItemGUID":"27272727-2727-2727-2727-272727272727","Weight@odata.type":"#Single","Weight":10,"AvailableUnits@odata.type":"#SByte","AvailableUnits":1,"Packaging":{"@odata.type":"#DataJS.Tests.V4.Package","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":
 false,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":7.922816251426434e+28,"Height@odata.type":"#Int16","Height":32767,"Width@odata.type":"#Int64","Width":9223372036854776000,"Volume":1.7976931348623157e+308,"Volume@odata.type":"#Int32"},"Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"},"CookedSize":{"@odata.type":"#DataJS.Tests.V4.CookedDimensions","Length@odata.type":"#Decimal","Length":2,"Height@odata.type":"#Int16","Height":1,"Width@odata.type":"#Int64","Width":3,"Volume":6,"Volume@odata.type":"#Int32"},"AlternativeNames@odata.type":"#Collection(String)","AlternativeNames":["ground cereal","ground grain"],"Providers@odata.type":"#Collection(DataJS.Tests.V4.Provider)","Providers":[{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Flour Provider","Aliases@odata.type":"#Collection(Strin
 g)","Aliases":["fp1","flour provider1"],"Details":{"@odata.type":"#DataJS.Tests.V4.ProviderDetails","Telephone":"555-555-555","PreferredCode":1001,"Telephone@odata.type":"#String","PreferredCode@odata.type":"#Int32"},"Name@odata.type":"#String"},{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Ground Grains","Aliases@odata.type":"#Collection(String)","Aliases":[],"Details":null,"Name@odata.type":"#String"}],"SpatialData@odata.type":"#GeometryCollection","SpatialData":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[5,5],"type@odata.type":"#String"}],"crs":{"type":"name","properties":{"name":"EPSG:4326","name@odata.type":"#String"},"type@odata.type":"#String"},"type@odata.type":"#String"},"Category@odata.navigationLink":"Foods(0)/Category","FoodID@odata.type":"#Int32","Name@odata.type":"#String","UnitPrice@odata.type":"#Decimal","MeasurementUnit@odata.type":"#String","CarbohydrateGrams@odata.type":"#Int32","IsAvailable@odata.type":"#Boolean"}
+},{
+  description: "Collection of Complex with metadata=full",
+  header:  "application/json;odata.metadata=full",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Providers",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Providers","@odata.type":"#Collection(DataJS.Tests.V4.Provider)","value":[{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Flour Provider","Aliases@odata.type":"#Collection(String)","Aliases":["fp1","flour provider1"],"Details":{"@odata.type":"#DataJS.Tests.V4.ProviderDetails","Telephone":"555-555-555","PreferredCode":1001}},{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Ground Grains","Aliases@odata.type":"#Collection(String)","Aliases":[],"Details":null}]}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Providers","@odata.type":"#Collection(DataJS.Tests.V4.Provider)","value":[{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Flour Provider","Aliases@odata.type":"#Collection(String)","Aliases":["fp1","flour provider1"],"Details":{"@odata.type":"#DataJS.Tests.V4.ProviderDetails","Telephone":"555-555-555","PreferredCode":1001,"Telephone@odata.type":"#String","PreferredCode@odata.type":"#Int32"},"Name@odata.type":"#String"},{"@odata.type":"#DataJS.Tests.V4.Provider","Name":"Ground Grains","Aliases@odata.type":"#Collection(String)","Aliases":[],"Details":null,"Name@odata.type":"#String"}]}
+},{
+  description: "Collection of Simple with metadata=full",
+  header:  "application/json;odata.metadata=full",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/AlternativeNames",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/AlternativeNames","@odata.type":"#Collection(String)","value":["ground cereal","ground grain"]}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/AlternativeNames","@odata.type":"#Collection(String)","value":["ground cereal","ground grain"]}
+},{
+  description: "Collection Property with metadata=full",
+  header:  "application/json;odata.metadata=full",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Packaging",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Packaging","@odata.type":"#DataJS.Tests.V4.Package","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":79228162514264337593543950335,"Height@odata.type":"#Int16","Height":32767,"Width@odata.type":"#Int64","Width":9223372036854775807,"Volume":1.7976931348623157E+308}}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Packaging","@odata.type":"#DataJS.Tests.V4.Package","Type":null,"Color":"","NumberPerPackage":2147483647,"RequiresRefridgeration":false,"ShipDate@odata.type":"#DateTimeOffset","ShipDate":"2000-12-29T00:00:00Z","PackageDimensions":{"@odata.type":"#DataJS.Tests.V4.Dimensions","Length@odata.type":"#Decimal","Length":7.922816251426434e+28,"Height@odata.type":"#Int16","Height":32767,"Width@odata.type":"#Int64","Width":9223372036854776000,"Volume":1.7976931348623157e+308,"Volume@odata.type":"#Int32"},"Color@odata.type":"#String","NumberPerPackage@odata.type":"#Int32","RequiresRefridgeration@odata.type":"#Boolean"}
+},{
+  description: "Simple Property with metadata=full",
+  header:  "application/json;odata.metadata=full",
+  usedUrl: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/Foods(0)/Name",
+  input:   '{"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Name","value":"flour"}',
+  expected: {"@odata.context":"http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata#Foods(0)/Name","value":"flour","value@odata.type":"#String"}
+}];
+
+
+var callTestNoMetadata = function(testData,done) {
+
+  var request = {
+      requestUri : testData.usedUrl,
+      headers :  {
+        Accept : testData.header
+      }
+  };
+
+  var success = function success(data) {
+    assert.deepEqual(data, testData.expected, "test '" + testData.description + "' didn't return the expected data");
+    done();
+  };
+
+  var errorFunc = function errorFunc(err) {
+    assert.fail('errorFunc','success', 'success should called');
+    done(err);
+  };
+ 
+   odatajs.oData.read(request, success, errorFunc);
+};
+
+var callTestMetadata = function(testData,metadata,done) {
+  var request = {
+      requestUri : testData.usedUrl,
+      headers :  {
+        Accept : testData.header
+      }
+  };
+
+  var success = function success(data) {
+    assert.deepEqual(data, testData.expected, "test '" + testData.description + "' didn't return the expected data");
+    done();
+  };
+
+  var errorFunc = function errorFunc(err) {
+    done(err);
+  };
+ 
+  odatajs.oData.read(request, success, errorFunc, null, null, metadata);
+};
+
+describe('TEST Scenario (needs c# test server on localhost:4002)', function() {
+
+    describe('with odata.metadata=none', function() {
+        for( var i = 0; i < testDataJsonParserMetadataNone.length;i++) {
+          var testData = testDataJsonParserMetadataNone[i];
+          it(testData.description, function (done) {
+            callTestNoMetadata(testData,done);
+          });
+        }
+    });
+
+    describe('with odata.metadata=minimal', function() {
+        for( var i = 0; i < testDataJsonParserMetadataMinimal.length;i++) {
+          var testData = testDataJsonParserMetadataMinimal[i];
+          it(testData.description, function (done) {
+            callTestNoMetadata(testData,done);
+          });
+        }
+    });
+
+
+
+
+    describe('with odata.metadata=minimal to full', function() {
+      var metadata;
+
+      function errorFunc(err) {
+            assert.fail('errorFunc','success', 'success should called');
+            //done(err);
+      }
+
+      before('load Metadata',function(done) {
+        var metaDatasuccess = function(lmetadata){
+            metadata = lmetadata;
+            done();
+        };
+        var oHeaders = {
+                    'Accept': 'text/html,application/xhtml+xml,application/xml,application/json;odata.metadata=full',
+                    "Odata-Version": "4.0",
+                    "OData-MaxVersion": "4.0",
+                    "Prefer": "odata.allow-entityreferences"
+                };
+        var metadataRequest =
+        {
+            headers: oHeaders,
+            requestUri: "http://localhost:4002/tests/endpoints/FoodStoreDataServiceV4.svc/$metadata", 
+            data: null,
+        };
+
+        odatajs.oData.read(metadataRequest, metaDatasuccess, errorFunc,odatajs.oData.metadataHandler);
+      });
+
+      for( var i = 0; i < testDataJsonParserMetadataMinimalToFull.length;i++) {
+        var testData = testDataJsonParserMetadataMinimalToFull[i];
+        it(testData.description, function (done) {
+          callTestMetadata(testData,metadata, done);
         });
+      }
     });
 
-});
\ No newline at end of file
+    describe('with odata.metadata=full', function() {
+        for( var i = 0; i < testDataJsonParserMetadataFull.length;i++) {
+          var testData = testDataJsonParserMetadataFull[i];
+          it(testData.description, function (done) {
+            callTestNoMetadata(testData,done);
+          });
+        }
+    });
+});
+
+


[2/2] olingo-odata4-js git commit: [OLINGO-439] add scenario tests

Posted by ko...@apache.org.
[OLINGO-439] add scenario tests


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/commit/49d9ecb5
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/tree/49d9ecb5
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/diff/49d9ecb5

Branch: refs/heads/master
Commit: 49d9ecb5a1acbc3016767d189b860ea37f2b49f1
Parents: 2d9599b
Author: Sven Kobler <sv...@sap.com>
Authored: Fri Nov 28 10:22:14 2014 +0100
Committer: Sven Kobler <sv...@sap.com>
Committed: Fri Nov 28 10:22:14 2014 +0100

----------------------------------------------------------------------
 odatajs/package.json               |   3 +-
 odatajs/src/lib/odata/net.js       | 298 +++++++++-----------------------
 odatajs/src/lib/xml.js             |   7 +-
 odatajs/test/test-demo-scenario.js | 285 ++++++++++++++++++++++++++++--
 4 files changed, 361 insertions(+), 232 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/49d9ecb5/odatajs/package.json
----------------------------------------------------------------------
diff --git a/odatajs/package.json b/odatajs/package.json
index 0323953..6c782bf 100644
--- a/odatajs/package.json
+++ b/odatajs/package.json
@@ -41,6 +41,7 @@
     "grunt-contrib-uglify": "^0.4.0",
     "grunt-curl": "^2.0.2",
     "grunt-jsdoc": "^0.5.6",
-    "grunt-nuget": "^0.1.3"
+    "grunt-nuget": "^0.1.3",
+    "xmldom": "^0.1.19"
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/49d9ecb5/odatajs/src/lib/odata/net.js
----------------------------------------------------------------------
diff --git a/odatajs/src/lib/odata/net.js b/odatajs/src/lib/odata/net.js
index 6e0f6c8..7d4f23b 100644
--- a/odatajs/src/lib/odata/net.js
+++ b/odatajs/src/lib/odata/net.js
@@ -20,8 +20,9 @@
 /** @module odata/net */
 
 
-
+var http = require('http');
 var utils    = require('./../utils.js');
+var url = require("url");
 // Imports.
 
 var defined = utils.defined;
@@ -40,55 +41,10 @@ var ticks = 0;
  * request but may in practice return content with a different MIME type.
  */
 function canUseJSONP(request) {
-    
-    if (request.method && request.method !== "GET") {
-        return false;
-    }
-
-    return true;
+    return false;
 }
 
-/** Creates an IFRAME tag for loading the JSONP script
- * @param {String} url - The source URL of the script
- * @returns {HTMLElement} The IFRAME tag
- */
-function createIFrame(url) {
-    var iframe = window.document.createElement("IFRAME");
-    iframe.style.display = "none";
 
-    var attributeEncodedUrl = url.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;");
-    var html = "<html><head><script type=\"text/javascript\" src=\"" + attributeEncodedUrl + "\"><\/script><\/head><body><\/body><\/html>";
-
-    var body = window.document.getElementsByTagName("BODY")[0];
-    body.appendChild(iframe);
-
-    writeHtmlToIFrame(iframe, html);
-    return iframe;
-};
-
-/** Creates a XmlHttpRequest object.
- * @returns {XmlHttpRequest} XmlHttpRequest object.
- */
-function createXmlHttpRequest() {
-    if (window.XMLHttpRequest) {
-        return new window.XMLHttpRequest();
-    }
-    var exception;
-    if (window.ActiveXObject) {
-        try {
-            return new window.ActiveXObject("Msxml2.XMLHTTP.6.0");
-        } catch (_) {
-            try {
-                return new window.ActiveXObject("Msxml2.XMLHTTP.3.0");
-            } catch (e) {
-                exception = e;
-            }
-        }
-    } else {
-        exception = { message: "XMLHttpRequest not supported" };
-    }
-    throw exception;
-}
 
 /** Checks whether the specified URL is an absolute URL.
  * @param {String} url - URL to check.
@@ -116,68 +72,30 @@ function isLocalUrl(url) {
     return (url.indexOf(locationDomain) === 0);
 }
 
-/** Removes a callback used for a JSONP request.
- * @param {String} name - Function name to remove.
- * @param {Number} tick - Tick count used on the callback.
- */
-function removeCallback(name, tick) {
-    try {
-        delete window[name];
-    } catch (err) {
-        window[name] = undefined;
-        if (tick === ticks - 1) {
-            ticks -= 1;
-        }
-    }
-};
-
-/** Removes an iframe.
- * @param {Object} iframe - The iframe to remove.
- * @returns {Object} Null value to be assigned to iframe reference.
- */
-function removeIFrame(iframe) {
-    if (iframe) {
-        writeHtmlToIFrame(iframe, "");
-        iframe.parentNode.removeChild(iframe);
-    }
-
-    return null;
-};
 
 /** Reads response headers into array.
  * @param {XMLHttpRequest} xhr - HTTP request with response available.
  * @param {Array} headers - Target array to fill with name/value pairs.
  */
-function readResponseHeaders(xhr, headers) {
-
-    var responseHeaders = xhr.getAllResponseHeaders().split(/\r?\n/);
-    var i, len;
-    for (i = 0, len = responseHeaders.length; i < len; i++) {
-        if (responseHeaders[i]) {
-            var header = responseHeaders[i].split(": ");
-            headers[header[0]] = header[1];
+function readResponseHeaders(inHeader, outHeader) {
+    for (var property in inHeader) {
+        
+        if (inHeader.hasOwnProperty(property)) {
+            //console.log(property);
+            //console.log(inHeader[property]);
+            outHeader[property] = inHeader[property];
         }
     }
 }
 
-/** Writes HTML to an IFRAME document.
- * @param {HTMLElement} iframe - The IFRAME element to write to.
- * @param {String} html - The HTML to write.
- */
-function writeHtmlToIFrame(iframe, html) {
-    var frameDocument = (iframe.contentWindow) ? iframe.contentWindow.document : iframe.contentDocument.document;
-    frameDocument.open();
-    frameDocument.write(html);
-    frameDocument.close();
-}
+    
 
-exports.defaultHttpClient = {
-    callbackParameterName: "$callback",
 
-    formatQueryString: "$format=json",
 
-    enableJsonpCallback: false,
+exports.defaultHttpClient = {
+    formatQueryString: "$format=json",
 
+    
     /** Performs a network request.
      * @param {Object} request - Request description
      * @param {Function} success - Success callback with the response object.
@@ -187,12 +105,26 @@ exports.defaultHttpClient = {
     request: function (request, success, error) {
 
         var result = {};
-        var xhr = null;
         var done = false;
-        var iframe;
+        
+        var options = url.parse(request.requestUri);
+        options.method = request.method || "GET";
+        options.headers = {};
+        //options.auth = request.user + ':' + request.password;
+        //add headers
+        var name;
+        if (request.headers) {
+            for (name in request.headers) {
+                options.headers[name] = request.headers[name];
+            }
+        }   
+        
+
+        //console.log('options'+JSON.stringify(options));
+        var xhr = http.request(options);
 
         result.abort = function () {
-            iframe = removeIFrame(iframe);
+            //console.log('_4');
             if (done) {
                 return;
             }
@@ -206,129 +138,71 @@ exports.defaultHttpClient = {
             error({ message: "Request aborted" });
         };
 
-        var handleTimeout = function () {
-            iframe = removeIFrame(iframe);
-            if (!done) {
-                done = true;
-                xhr = null;
-                error({ message: "Request timed out" });
-            }
-        };
-
-        var name;
-        var url = request.requestUri;
-        var enableJsonpCallback = defined(request.enableJsonpCallback, this.enableJsonpCallback);
-        var callbackParameterName = defined(request.callbackParameterName, this.callbackParameterName);
-        var formatQueryString = defined(request.formatQueryString, this.formatQueryString);
-        if (!enableJsonpCallback || isLocalUrl(url)) {
-
-            xhr = createXmlHttpRequest();
-            xhr.onreadystatechange = function () {
-                if (done || xhr === null || xhr.readyState !== 4) {
-                    return;
-                }
-
-                // Workaround for XHR behavior on IE.
-                var statusText = xhr.statusText;
-                var statusCode = xhr.status;
-                if (statusCode === 1223) {
-                    statusCode = 204;
-                    statusText = "No Content";
+        // Set the timeout if available.
+        if (request.timeoutMS) {
+            //console.log('_6');
+            xhr.setTimeout(request.timeoutMS,function () {
+                if (!done) {
+                    done = true;
+                    xhr = null;
+                    error({ message: "Request timed out" });
                 }
+            });
+        }
 
-                var headers = [];
-                readResponseHeaders(xhr, headers);
+        xhr.on('error', function(e) {
+            //console.log('_22'+e);
+            var response = { requestUri: url, statusCode: 400, statusText: e.message, headers: headers, body: body };
+            error({ message: "HTTP request failed", request: request, response: response });
+        });
+             
 
-                var response = { requestUri: url, statusCode: statusCode, statusText: statusText, headers: headers, body: xhr.responseText };
+        xhr.on('response', function (resp) {
+            //console.log('1');
+            if (done || xhr === null) {
+                return;
+            }
+            //console.log('2');
+            
+            var headers = [];
+            readResponseHeaders(resp.headers, headers);
+                        
+            var body = '';
+
+            resp.on('data', function(chunk) {
+                ///console.log('chunk'+JSON.stringify(chunk));
+                body+=chunk;
+                //console.log('3');
+                
+            });
+            resp.on('end', function() {
+                //console.log('4');
+                // do what you do
+                var response = { requestUri: url, statusCode: resp.statusCode, statusText: '', headers: headers, body: body };
 
                 done = true;
                 xhr = null;
-                if (statusCode >= 200 && statusCode <= 299) {
+                if (resp.statusCode >= 200 && resp.statusCode <= 299) {
+                    //console.log('5');
+                    //console.log(response);
                     success(response);
                 } else {
                     error({ message: "HTTP request failed", request: request, response: response });
-                }
-            };
-
-            xhr.open(request.method || "GET", url, true, request.user, request.password);
-
-            // Set the name/value pairs.
-            if (request.headers) {
-                for (name in request.headers) {
-                    xhr.setRequestHeader(name, request.headers[name]);
-                }
-            }
-
-            // Set the timeout if available.
-            if (request.timeoutMS) {
-                xhr.timeout = request.timeoutMS;
-                xhr.ontimeout = handleTimeout;
-            }
-
-            xhr.send(request.body);
-        } else {
-            if (!canUseJSONP(request)) {
-                throw { message: "Request is not local and cannot be done through JSONP." };
-            }
-
-            var tick = ticks;
-            ticks += 1;
-            var tickText = tick.toString();
-            var succeeded = false;
-            var timeoutId;
-            name = "handleJSONP_" + tickText;
-            window[name] = function (data) {
-                iframe = removeIFrame(iframe);
-                if (!done) {
-                    succeeded = true;
-                    window.clearTimeout(timeoutId);
-                    removeCallback(name, tick);
-
-                    // Workaround for IE8 and IE10 below where trying to access data.constructor after the IFRAME has been removed
-                    // throws an "unknown exception"
-                    if (window.ActiveXObject) {
-                        data = window.JSON.parse(window.JSON.stringify(data));
-                    }
-
-
-                    var headers;
-                    if (!formatQueryString || formatQueryString == "$format=json") {
-                        headers = { "Content-Type": "application/json;odata.metadata=minimal", "OData-Version": "4.0" };
-                    } else {
-                        // the formatQueryString should be in the format of "$format=xxx", xxx should be one of the application/json;odata.metadata=minimal(none or full)
-                        // set the content-type with the string xxx which stars from index 8.
-                        headers = { "Content-Type": formatQueryString.substring(8), "OData-Version": "4.0" };
-                    }
-
-                    // Call the success callback in the context of the parent window, instead of the IFRAME
-                    delay(function () {
-                        removeIFrame(iframe);
-                        success({ body: data, statusCode: 200, headers: headers });
-                    });
-                }
-            };
-
-            // Default to two minutes before timing out, 1000 ms * 60 * 2 = 120000.
-            var timeoutMS = (request.timeoutMS) ? request.timeoutMS : 120000;
-            timeoutId = window.setTimeout(handleTimeout, timeoutMS);
-
-            var queryStringParams = callbackParameterName + "=parent." + name;
-            if (formatQueryString) {
-                queryStringParams += "&" + formatQueryString;
-            }
-
-            var qIndex = url.indexOf("?");
-            if (qIndex === -1) {
-                url = url + "?" + queryStringParams;
-            } else if (qIndex === url.length - 1) {
-                url = url + queryStringParams;
-            } else {
-                url = url + "&" + queryStringParams;
-            }
-
-            iframe = createIFrame(url);
+                }   
+            });
+        });
+
+        //xhr.open(request.method || "GET", url, true,);
+        //console.log(request.body);
+        //console.log('_1');
+        if (request.body) {
+            //console.log('_2');
+            xhr.write(request.body);
         }
-
+        //console.log('_3');
+        xhr.end();
+        //console.log('_4');
+         
         return result;
     }
 };

http://git-wip-us.apache.org/repos/asf/olingo-odata4-js/blob/49d9ecb5/odatajs/src/lib/xml.js
----------------------------------------------------------------------
diff --git a/odatajs/src/lib/xml.js b/odatajs/src/lib/xml.js
index b8af4fe..fdffe10 100644
--- a/odatajs/src/lib/xml.js
+++ b/odatajs/src/lib/xml.js
@@ -175,7 +175,12 @@ function xmlThrowParserError(exceptionOrReason, srcText, errorXmlText) {
  * This function will throw an exception in case of a parse error
  */
 function xmlParse(text) {
-    var domParser = window.DOMParser && new window.DOMParser();
+    var domParser = undefined;
+    if (utils.inBrowser()) {
+        domParser = window.DOMParser && new window.DOMParser();
+    } else {
+        domParser = new (require('xmldom').DOMParser)();
+    }
     var dom;
 
     if (!domParser) {