public void Cultures_That_Are_Not_Invariant_Write_Invariant_Culture_Imml() { if (Thread.CurrentThread.CurrentCulture.IsReadOnly) { Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentCulture.Clone() as CultureInfo; } Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ","; Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator = "."; try { var immlDocument = new ImmlDocument(); immlDocument.Gravity = new Vector3(1.2345f, 2.3456f, 3.4567f); immlDocument.SoundSpeed = 10.34566f; var immlSerialiser = new ImmlSerialiser(); var immlString = immlSerialiser.Write(immlDocument); var textReader = new StringReader(immlString); var xDoc = XDocument.Load(textReader); Assert.Equal("1.2345,2.3456,3.4567", xDoc.Root.Attribute(XName.Get("Gravity", string.Empty)).Value); Assert.Equal("10.34566", xDoc.Root.Attribute(XName.Get("SoundSpeed", string.Empty)).Value); } finally { //restore it Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator; Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator = CultureInfo.InvariantCulture.NumberFormat.NumberGroupSeparator; } }
public void Using_A_Sort_Comparer_Alters_The_Order_Of_The_Attrbutes_Written_By_The_Serialiser() { var immlSerialiser = new ImmlSerialiser(); var primitive = new Primitive(); primitive.Behaviours.Add(Guid.NewGuid().ToString()); primitive.CastShadows = true; primitive.Complexity = PrimitiveComplexity.VeryHigh; primitive.Name = Guid.NewGuid().ToString(); primitive.Position = new Vector3(1, 2, 3); primitive.Rotation = new Vector3(4, 5, 6); primitive.Size = new Vector3(7, 8, 9); var attribSortComparer = new Mock<IComparer<string>>(); attribSortComparer.Setup(c => c.Compare(It.IsAny<string>(), It.IsAny<string>())).Returns(new Func<string, string, int>(_NameFirstAttributeComparer)); var immlString = immlSerialiser.Write(primitive, attribSortComparer.Object); var textReader = new StringReader(immlString); var xDoc = XDocument.Load(textReader); var xElementPrimitive = xDoc.Descendants(XName.Get("Primitive", immlSerialiser.Namespace)).FirstOrDefault(); Assert.NotNull(xElementPrimitive); Assert.Equal("Name", xElementPrimitive.Attributes().First().Name.LocalName); }
public void Serialiser_Writes_Vector3_Values_Correctly_To_String() { var model = new Model(); model.Position = new Vector3(float.MinValue, float.Epsilon, float.MaxValue); model.Rotation = new Vector3(1, 2, 3); var immlSerialiser = new ImmlSerialiser(); var immlString = immlSerialiser.Write(model); var textReader = new StringReader(immlString); var xDoc = XDocument.Load(textReader); var xElementModel = xDoc.Descendants(XName.Get("Model", immlSerialiser.Namespace)).FirstOrDefault(); Assert.NotNull(xElementModel); Assert.Equal(model.Position.ToString(), xElementModel.Attribute(XName.Get("Position")).Value); Assert.Equal(model.Rotation.ToString(), xElementModel.Attribute(XName.Get("Rotation")).Value); }
public void Serialiser_Writes_Material_Values_Correctly_To_String() { var model = new Model(); var materialGroup = new MaterialGroup(); materialGroup.Id = -1; var material = new Material(Color3.Red, Color3.Green, Color3.Blue, Color3.Black, 10, 1); materialGroup.Add(material); model.Add(materialGroup); var immlSerialiser = new ImmlSerialiser(); var immlString = immlSerialiser.Write(model); var textReader = new StringReader(immlString); var xDoc = XDocument.Load(textReader); var xElementMaterial = xDoc.Descendants(XName.Get("Material", immlSerialiser.Namespace)).FirstOrDefault(); Assert.NotNull(xElementMaterial); Assert.Equal(material.Ambient.ToString(), xElementMaterial.Attribute(XName.Get("Ambient")).Value); Assert.Equal(material.Diffuse.ToString(), xElementMaterial.Attribute(XName.Get("Diffuse")).Value); Assert.Equal(material.Emissive.ToString(), xElementMaterial.Attribute(XName.Get("Emissive")).Value); Assert.Equal(material.Specular.ToString(), xElementMaterial.Attribute(XName.Get("Specular")).Value); Assert.Equal(material.Power.ToString(), xElementMaterial.Attribute(XName.Get("Power")).Value); Assert.Equal(material.Opacity.ToString(), xElementMaterial.Attribute(XName.Get("Opacity")).Value); }
public void Serialiser_Does_Not_Write_Attributes_That_Are_Set_To_Their_Default_Values() { var immlDocument = new ImmlDocument(); var immlSerialiser = new ImmlSerialiser(); var immlString = immlSerialiser.Write(immlDocument); //test for some optional values Assert.DoesNotContain("Gravity=\"0,-9.8,0\"", immlString); Assert.DoesNotContain("GlobalIllumination=\"#4c4c4c\"", immlString); Assert.DoesNotContain("AnimationSpeed=\"1\"", immlString); Assert.DoesNotContain("PhysicsSpeed=\"1\"", immlString); Assert.DoesNotContain("SoundSpeed=\"1\"", immlString); }
public void Serialiser_Does_Not_Write_Optional_Attributes_That_Do_Not_Have_A_Value() { var immlDocument = new ImmlDocument(); var immlSerialiser = new ImmlSerialiser(); var immlString = immlSerialiser.Write(immlDocument); //test for some optional values Assert.DoesNotContain("Author", immlString); Assert.DoesNotContain("Description", immlString); }
public void Serialiser_Correctly_Writes_Script_Elements() { var script = new Script(); script.Value = "function main(obj, args)\r\nend"; var immlSerialiser = new ImmlSerialiser(); var immlString = immlSerialiser.Write(script); var textReader = new StringReader(immlString); var xDoc = XDocument.Load(textReader); var xElementScript = xDoc.Descendants(XName.Get("Script", immlSerialiser.Namespace)).FirstOrDefault(); Assert.NotNull(xElementScript); Assert.Contains("function main(obj, args)", xElementScript.Value); }
public void Serialiser_Can_Write_A_Simple_Nested_Hierarchy_To_A_String() { var immlDocument = new ImmlDocument(); immlDocument.Author = Guid.NewGuid().ToString(); var model = new Model(); model.Name = Guid.NewGuid().ToString(); model.Source = string.Format("http://{0}", Guid.NewGuid().ToString()); var primitive = new Primitive(); primitive.Name = Guid.NewGuid().ToString(); var camera = new Camera(); camera.Name = Guid.NewGuid().ToString(); primitive.Add(camera); model.Add(primitive); immlDocument.Add(model); var immlSerialiser = new ImmlSerialiser(); var immlString = immlSerialiser.Write(immlDocument); var textReader = new StringReader(immlString); var xDoc = XDocument.Load(textReader); //verify the model is in the correct place var xElementModel = xDoc.Descendants(XName.Get("Model", immlSerialiser.Namespace)).Where(e => e.Attribute(XName.Get("Name")).Value == model.Name).FirstOrDefault(); Assert.NotNull(xElementModel); Assert.Equal(immlDocument.Name, xElementModel.Parent.Attribute(XName.Get("Name")).Value); //verify the primitive is in the correct place var xElementPrimitive = xDoc.Descendants(XName.Get("Primitive", immlSerialiser.Namespace)).Where(e => e.Attribute(XName.Get("Name")).Value == primitive.Name).FirstOrDefault(); Assert.NotNull(xElementPrimitive); Assert.Equal(model.Name, xElementPrimitive.Parent.Attribute(XName.Get("Name")).Value); //verify the camera is in the correct place var xElementCamera = xDoc.Descendants(XName.Get("Camera", immlSerialiser.Namespace)).Where(e => e.Attribute(XName.Get("Name")).Value == camera.Name).FirstOrDefault(); Assert.NotNull(xElementCamera); Assert.Equal(primitive.Name, xElementCamera.Parent.Attribute(XName.Get("Name")).Value); }
public void Serialiser_Can_Write_An_Object_To_A_String() { var primitive = new Primitive(); primitive.Name = Guid.NewGuid().ToString(); var immlSerialiser = new ImmlSerialiser(); var imml = immlSerialiser.Write(primitive); Assert.True(imml.Contains(string.Format("Name=\"{0}\"", primitive.Name))); }
public void Serialiser_Can_Write_An_Object_To_A_Stream() { var primitive = new Primitive(); primitive.Name = Guid.NewGuid().ToString(); var outputStream = new MemoryStream(); var immlSerialiser = new ImmlSerialiser(); immlSerialiser.Write(primitive, outputStream); Assert.True(outputStream.Length > 0); var immlString = Encoding.ASCII.GetString(outputStream.ToArray()); Assert.True(immlString.Contains(string.Format("Name=\"{0}\"", primitive.Name))); }
public void Serialiser_Can_Write_An_ImmlDocument_With_Attributes_To_A_String() { var immlDocument = new ImmlDocument(); immlDocument.Author = Guid.NewGuid().ToString(); immlDocument.AnimationSpeed = (float)new Random().NextDouble(); immlDocument.SoundSpeed = (float)new Random().NextDouble(); immlDocument.PhysicsSpeed = (float)new Random().NextDouble(); immlDocument.Background = Guid.NewGuid().ToString(); immlDocument.Behaviours.Add(Guid.NewGuid().ToString()); immlDocument.Behaviours.Add(Guid.NewGuid().ToString()); immlDocument.Camera = Guid.NewGuid().ToString(); immlDocument.Context = Guid.NewGuid().ToString(); immlDocument.Description = Guid.NewGuid().ToString(); immlDocument.GlobalIllumination = Color3.Red; immlDocument.Gravity = Vector3.UnitZ; immlDocument.HostUri = new Uri("http://www.vastpark.com"); immlDocument.Name = Guid.NewGuid().ToString(); immlDocument.Tags.Add("tag1"); immlDocument.Tags.Add("tag2"); var immlSerialiser = new ImmlSerialiser(); var immlString = immlSerialiser.Write(immlDocument); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Author", immlDocument.Author))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "AnimationSpeed", immlDocument.AnimationSpeed))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "SoundSpeed", immlDocument.SoundSpeed))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "PhysicsSpeed", immlDocument.PhysicsSpeed))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Background", immlDocument.Background))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Camera", immlDocument.Camera))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Description", immlDocument.Description))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "GlobalIllumination", immlDocument.GlobalIllumination))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "HostUri", immlDocument.HostUri))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Name", immlDocument.Name))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Behaviours", TypeConvert.Parse(immlDocument.Behaviours)))); Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Tags", TypeConvert.Parse(immlDocument.Tags)))); }