public override object CreateInstanceOf(Type type, Random rndGen) { if (type == typeof(float)) { float result; do { result = PrimitiveCreator.CreateInstanceOfSingle(rndGen); }while (float.IsInfinity(result)); return(result); } else if (type == typeof(double)) { double result; do { result = PrimitiveCreator.CreateInstanceOfDouble(rndGen); }while (double.IsInfinity(result)); return(result); } else { return(new DerivedType(rndGen)); } }
static JToken CreateJsonPrimitive(Random rndGen) { switch (rndGen.Next(17)) { case 0: return(PrimitiveCreator.CreateInstanceOfChar(rndGen)); case 1: return(new JValue(PrimitiveCreator.CreateInstanceOfByte(rndGen))); case 2: return(PrimitiveCreator.CreateInstanceOfSByte(rndGen)); case 3: return(PrimitiveCreator.CreateInstanceOfInt16(rndGen)); case 4: return(PrimitiveCreator.CreateInstanceOfUInt16(rndGen)); case 5: return(PrimitiveCreator.CreateInstanceOfInt32(rndGen)); case 6: return(PrimitiveCreator.CreateInstanceOfUInt32(rndGen)); case 7: return(PrimitiveCreator.CreateInstanceOfInt64(rndGen)); case 8: return(PrimitiveCreator.CreateInstanceOfUInt64(rndGen)); case 9: return(PrimitiveCreator.CreateInstanceOfDecimal(rndGen)); case 10: return(PrimitiveCreator.CreateInstanceOfDouble(rndGen)); case 11: return(PrimitiveCreator.CreateInstanceOfSingle(rndGen)); case 12: return(PrimitiveCreator.CreateInstanceOfDateTime(rndGen)); case 13: return(PrimitiveCreator.CreateInstanceOfDateTimeOffset(rndGen)); case 14: case 15: // TODO: 199532 fix uri comparer return(PrimitiveCreator.CreateInstanceOfString(rndGen)); default: return(PrimitiveCreator.CreateInstanceOfBoolean(rndGen)); } }
public static JsonValue CreateDeepLevelJsonValue() { int seed = Environment.TickCount; Log.Info("Seed: {0}", seed); Random rndGen = new Random(seed); bool myBool = PrimitiveCreator.CreateInstanceOfBoolean(rndGen); byte myByte = PrimitiveCreator.CreateInstanceOfByte(rndGen); DateTime myDatetime = PrimitiveCreator.CreateInstanceOfDateTime(rndGen); DateTimeOffset myDateTimeOffset = PrimitiveCreator.CreateInstanceOfDateTimeOffset(rndGen); decimal myDecimal = PrimitiveCreator.CreateInstanceOfDecimal(rndGen); double myDouble = PrimitiveCreator.CreateInstanceOfDouble(rndGen); short myInt16 = PrimitiveCreator.CreateInstanceOfInt16(rndGen); int myInt32 = PrimitiveCreator.CreateInstanceOfInt32(rndGen); long myInt64 = PrimitiveCreator.CreateInstanceOfInt64(rndGen); sbyte mySByte = PrimitiveCreator.CreateInstanceOfSByte(rndGen); float mySingle = PrimitiveCreator.CreateInstanceOfSingle(rndGen); string myString = PrimitiveCreator.CreateInstanceOfString(rndGen, 20, null); ushort myUInt16 = PrimitiveCreator.CreateInstanceOfUInt16(rndGen); uint myUInt32 = PrimitiveCreator.CreateInstanceOfUInt32(rndGen); ulong myUInt64 = PrimitiveCreator.CreateInstanceOfUInt64(rndGen); JsonArray myArray = new JsonArray { myBool, myByte, myDatetime, myDateTimeOffset, myDecimal, myDouble, myInt16, myInt32, myInt64, mySByte, mySingle, myString, myUInt16, myUInt32, myUInt64 }; JsonArray myArrayLevel2 = new JsonArray { myArray, myArray, myArray }; JsonArray myArrayLevel3 = new JsonArray { myArrayLevel2, myArrayLevel2, myArrayLevel2 }; JsonArray myArrayLevel4 = new JsonArray { myArrayLevel3, myArrayLevel3, myArrayLevel3 }; JsonArray myArrayLevel5 = new JsonArray { myArrayLevel4, myArrayLevel4, myArrayLevel4 }; JsonArray myArrayLevel6 = new JsonArray { myArrayLevel5, myArrayLevel5, myArrayLevel5 }; JsonArray myArrayLevel7 = new JsonArray { myArrayLevel6, myArrayLevel6, myArrayLevel6 }; JsonArray sourceJson = BuildJsonArrayinSequence1(myBool, myByte, myDatetime, myDateTimeOffset, myDecimal, myDouble, myInt16, myInt32, myInt64, mySByte, mySingle, myString, myUInt16, myUInt32, myUInt64, myArray, myArrayLevel2, myArrayLevel3, myArrayLevel4, myArrayLevel5, myArrayLevel6, myArrayLevel7); return(sourceJson); }
public void ValidJsonArrayRoundTrip() { bool oldValue = CreatorSettings.CreateDateTimeWithSubMilliseconds; CreatorSettings.CreateDateTimeWithSubMilliseconds = false; try { int seed = 1; Log.Info("Seed: {0}", seed); Random rndGen = new Random(seed); JsonArray sourceJson = new JsonArray(new JsonValue[] { PrimitiveCreator.CreateInstanceOfBoolean(rndGen), PrimitiveCreator.CreateInstanceOfByte(rndGen), PrimitiveCreator.CreateInstanceOfDateTime(rndGen), PrimitiveCreator.CreateInstanceOfDateTimeOffset(rndGen), PrimitiveCreator.CreateInstanceOfDecimal(rndGen), PrimitiveCreator.CreateInstanceOfDouble(rndGen), PrimitiveCreator.CreateInstanceOfInt16(rndGen), PrimitiveCreator.CreateInstanceOfInt32(rndGen), PrimitiveCreator.CreateInstanceOfInt64(rndGen), PrimitiveCreator.CreateInstanceOfSByte(rndGen), PrimitiveCreator.CreateInstanceOfSingle(rndGen), PrimitiveCreator.CreateInstanceOfString(rndGen), PrimitiveCreator.CreateInstanceOfUInt16(rndGen), PrimitiveCreator.CreateInstanceOfUInt32(rndGen), PrimitiveCreator.CreateInstanceOfUInt64(rndGen) }); JsonArray newJson = (JsonArray)JsonValue.Parse(sourceJson.ToString()); Log.Info("Original JsonArray object is: {0}", sourceJson); Log.Info("Round-tripped JsonArray object is: {0}", newJson); if (!JsonValueVerifier.Compare(sourceJson, newJson)) { Assert.Fail("Test failed! The new JsonValue does not equal to the original one."); } } finally { CreatorSettings.CreateDateTimeWithSubMilliseconds = oldValue; } }
public void MixedJsonTypeFunctionalTest() { bool oldValue = CreatorSettings.CreateDateTimeWithSubMilliseconds; CreatorSettings.CreateDateTimeWithSubMilliseconds = false; try { int seed = 1; for (int i = 0; i < iterationCount; i++) { seed++; Log.Info("Seed: {0}", seed); Random rndGen = new Random(seed); JsonArray sourceJson = new JsonArray(new List <JsonValue>() { PrimitiveCreator.CreateInstanceOfBoolean(rndGen), PrimitiveCreator.CreateInstanceOfByte(rndGen), PrimitiveCreator.CreateInstanceOfDateTime(rndGen), PrimitiveCreator.CreateInstanceOfDateTimeOffset(rndGen), PrimitiveCreator.CreateInstanceOfDecimal(rndGen), PrimitiveCreator.CreateInstanceOfDouble(rndGen), PrimitiveCreator.CreateInstanceOfInt16(rndGen), PrimitiveCreator.CreateInstanceOfInt32(rndGen), PrimitiveCreator.CreateInstanceOfInt64(rndGen), PrimitiveCreator.CreateInstanceOfSByte(rndGen), PrimitiveCreator.CreateInstanceOfSingle(rndGen), PrimitiveCreator.CreateInstanceOfString(rndGen), PrimitiveCreator.CreateInstanceOfUInt16(rndGen), PrimitiveCreator.CreateInstanceOfUInt32(rndGen), PrimitiveCreator.CreateInstanceOfUInt64(rndGen), new JsonObject(new Dictionary <string, JsonValue>() { { "Boolean", PrimitiveCreator.CreateInstanceOfBoolean(rndGen) }, { "Byte", PrimitiveCreator.CreateInstanceOfByte(rndGen) }, { "DateTime", PrimitiveCreator.CreateInstanceOfDateTime(rndGen) }, { "DateTimeOffset", PrimitiveCreator.CreateInstanceOfDateTimeOffset(rndGen) }, { "Decimal", PrimitiveCreator.CreateInstanceOfDecimal(rndGen) }, { "Double", PrimitiveCreator.CreateInstanceOfDouble(rndGen) }, { "Int16", PrimitiveCreator.CreateInstanceOfInt16(rndGen) }, { "Int32", PrimitiveCreator.CreateInstanceOfInt32(rndGen) }, { "Int64", PrimitiveCreator.CreateInstanceOfInt64(rndGen) }, { "SByte", PrimitiveCreator.CreateInstanceOfSByte(rndGen) }, { "Single", PrimitiveCreator.CreateInstanceOfSingle(rndGen) }, { "String", PrimitiveCreator.CreateInstanceOfString(rndGen) }, { "UInt16", PrimitiveCreator.CreateInstanceOfUInt16(rndGen) }, { "UInt32", PrimitiveCreator.CreateInstanceOfUInt32(rndGen) }, { "UInt64", PrimitiveCreator.CreateInstanceOfUInt64(rndGen) } }) }); JsonArray newJson = (JsonArray)JsonValue.Parse(sourceJson.ToString()); Assert.True(JsonValueVerifier.Compare(sourceJson, newJson)); } } finally { CreatorSettings.CreateDateTimeWithSubMilliseconds = oldValue; } }
private bool TestPrimitiveType(string typeName) { bool retValue = true; bool specialCase = false; int seed = 1; Log.Info("Seed: {0}", seed); Random rndGen = new Random(seed); JsonPrimitive sourceJson = null; JsonPrimitive sourceJson2; object tempValue = null; switch (typeName.ToLower()) { case "boolean": tempValue = PrimitiveCreator.CreateInstanceOfBoolean(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempValue.ToString().ToLower()); sourceJson2 = new JsonPrimitive((bool)tempValue); break; case "byte": tempValue = PrimitiveCreator.CreateInstanceOfByte(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempValue.ToString()); sourceJson2 = new JsonPrimitive((byte)tempValue); break; case "char": sourceJson2 = new JsonPrimitive((char)PrimitiveCreator.CreateInstanceOfChar(rndGen)); specialCase = true; break; case "datetime": tempValue = PrimitiveCreator.CreateInstanceOfDateTime(rndGen); sourceJson2 = new JsonPrimitive((DateTime)tempValue); sourceJson = (JsonPrimitive)JsonValue.Parse(sourceJson2.ToString()); break; case "decimal": tempValue = PrimitiveCreator.CreateInstanceOfDecimal(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(((decimal)tempValue).ToString(NumberFormatInfo.InvariantInfo)); sourceJson2 = new JsonPrimitive((decimal)tempValue); break; case "double": double tempDouble = PrimitiveCreator.CreateInstanceOfDouble(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempDouble.ToString("R", NumberFormatInfo.InvariantInfo)); sourceJson2 = new JsonPrimitive(tempDouble); break; case "guid": sourceJson2 = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfGuid(rndGen)); specialCase = true; break; case "int16": tempValue = PrimitiveCreator.CreateInstanceOfInt16(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempValue.ToString()); sourceJson2 = new JsonPrimitive((short)tempValue); break; case "int32": tempValue = PrimitiveCreator.CreateInstanceOfInt32(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempValue.ToString()); sourceJson2 = new JsonPrimitive((int)tempValue); break; case "int64": tempValue = PrimitiveCreator.CreateInstanceOfInt64(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempValue.ToString()); sourceJson2 = new JsonPrimitive((long)tempValue); break; case "sbyte": tempValue = PrimitiveCreator.CreateInstanceOfSByte(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempValue.ToString()); sourceJson2 = new JsonPrimitive((sbyte)tempValue); break; case "single": float fltValue = PrimitiveCreator.CreateInstanceOfSingle(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(fltValue.ToString("R", NumberFormatInfo.InvariantInfo)); sourceJson2 = new JsonPrimitive(fltValue); break; case "string": do { tempValue = PrimitiveCreator.CreateInstanceOfString(rndGen); } while (tempValue == null); sourceJson2 = new JsonPrimitive((string)tempValue); sourceJson = (JsonPrimitive)JsonValue.Parse(sourceJson2.ToString()); break; case "uint16": tempValue = PrimitiveCreator.CreateInstanceOfUInt16(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempValue.ToString()); sourceJson2 = new JsonPrimitive((ushort)tempValue); break; case "uint32": tempValue = PrimitiveCreator.CreateInstanceOfUInt32(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempValue.ToString()); sourceJson2 = new JsonPrimitive((uint)tempValue); break; case "uint64": tempValue = PrimitiveCreator.CreateInstanceOfUInt64(rndGen); sourceJson = (JsonPrimitive)JsonValue.Parse(tempValue.ToString()); sourceJson2 = new JsonPrimitive((ulong)tempValue); break; case "uri": Uri uri = null; do { try { uri = PrimitiveCreator.CreateInstanceOfUri(rndGen); } catch (UriFormatException) { } } while (uri == null); sourceJson2 = new JsonPrimitive(uri); specialCase = true; break; case "null": sourceJson = (JsonPrimitive)JsonValue.Parse("null"); sourceJson2 = null; break; default: sourceJson = null; sourceJson2 = null; break; } if (!specialCase) { // comparison between two constructors if (!JsonValueVerifier.Compare(sourceJson, sourceJson2)) { Log.Info("(JsonPrimitive)JsonValue.Parse(string) failed to match the results from default JsonPrimitive(obj)constructor for type {0}", typeName); retValue = false; } if (sourceJson != null) { // test JsonValue.Load(TextReader) JsonPrimitive newJson = null; using (StringReader sr = new StringReader(sourceJson.ToString())) { newJson = (JsonPrimitive)JsonValue.Load(sr); } if (!JsonValueVerifier.Compare(sourceJson, newJson)) { Log.Info("JsonValue.Load(TextReader) failed to function properly for type {0}", typeName); retValue = false; } // test JsonValue.Load(Stream) is located in the JObjectFromGenoTypeLib test case // test JsonValue.Parse(string) newJson = null; newJson = (JsonPrimitive)JsonValue.Parse(sourceJson.ToString()); if (!JsonValueVerifier.Compare(sourceJson, newJson)) { Log.Info("JsonValue.Parse(string) failed to function properly for type {0}", typeName); retValue = false; } } } else { // test JsonValue.Load(TextReader) JsonPrimitive newJson2 = null; using (StringReader sr = new StringReader(sourceJson2.ToString())) { newJson2 = (JsonPrimitive)JsonValue.Load(sr); } if (!JsonValueVerifier.Compare(sourceJson2, newJson2)) { Log.Info("JsonValue.Load(TextReader) failed to function properly for type {0}", typeName); retValue = false; } // test JsonValue.Load(Stream) is located in the JObjectFromGenoTypeLib test case // test JsonValue.Parse(string) newJson2 = null; newJson2 = (JsonPrimitive)JsonValue.Parse(sourceJson2.ToString()); if (!JsonValueVerifier.Compare(sourceJson2, newJson2)) { Log.Info("JsonValue.Parse(string) failed to function properly for type {0}", typeName); retValue = false; } } return(retValue); }
public static JsonPrimitive GetRandomJsonPrimitives(int seed) { JsonPrimitive myObject; Random rndGen = new Random(seed); int mod = seed % 13; switch (mod) { case 1: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfBoolean(rndGen)); break; case 2: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfByte(rndGen)); break; case 3: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfDateTime(rndGen)); break; case 4: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfDecimal(rndGen)); break; case 5: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfInt16(rndGen)); break; case 6: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfInt32(rndGen)); break; case 7: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfInt64(rndGen)); break; case 8: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfSByte(rndGen)); break; case 9: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfSingle(rndGen)); break; case 10: string temp; do { temp = PrimitiveCreator.CreateInstanceOfString(rndGen); }while (temp == null); myObject = new JsonPrimitive(temp); break; case 11: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfUInt16(rndGen)); break; case 12: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfUInt32(rndGen)); break; default: myObject = new JsonPrimitive(PrimitiveCreator.CreateInstanceOfUInt64(rndGen)); break; } return(myObject); }