diff --git a/OSCADSharp/OSCADSharp.UnitTests/OSCADSharp.UnitTests.csproj b/OSCADSharp/OSCADSharp.UnitTests/OSCADSharp.UnitTests.csproj index 6cd12b4..6763354 100644 --- a/OSCADSharp/OSCADSharp.UnitTests/OSCADSharp.UnitTests.csproj +++ b/OSCADSharp/OSCADSharp.UnitTests/OSCADSharp.UnitTests.csproj @@ -59,6 +59,7 @@ + diff --git a/OSCADSharp/OSCADSharp.UnitTests/Transforms/ColorTests.cs b/OSCADSharp/OSCADSharp.UnitTests/Transforms/ColorTests.cs new file mode 100644 index 0000000..3151a7a --- /dev/null +++ b/OSCADSharp/OSCADSharp.UnitTests/Transforms/ColorTests.cs @@ -0,0 +1,31 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using OSCADSharp.Scripting; +using OSCADSharp.Solids; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OSCADSharp.UnitTests.Transforms +{ + [TestClass] + public class ColorTests + { + [TestMethod] + public void Color_BoundFieldsAppearInOutput() + { + Variable colorVar = new Variable("myFavoriteColor", "blue"); + Variable cubeOpacity = new Variable("cubeOpacity", .6); + + var obj = new Cube().Color("Red", .5); + obj.Bind("color", colorVar); + obj.Bind("opacity", cubeOpacity); + + string script = obj.ToString(); + + Assert.IsTrue(script.Contains("myFavoriteColor")); + Assert.IsTrue(script.Contains("cubeOpacity")); + } + } +} diff --git a/OSCADSharp/OSCADSharp/Transforms/ColoredObject.cs b/OSCADSharp/OSCADSharp/Transforms/ColoredObject.cs index 4bdf5aa..017905c 100644 --- a/OSCADSharp/OSCADSharp/Transforms/ColoredObject.cs +++ b/OSCADSharp/OSCADSharp/Transforms/ColoredObject.cs @@ -32,7 +32,12 @@ namespace OSCADSharp.Transforms public override string ToString() { - string colorCommand = String.Format("color(\"{0}\", {1})", this.ColorName, this.Opacity); + string colorName = this.bindings.Contains("color") ? this.bindings.Get("color").BoundVariable.Name : + this.ColorName; + string opacity = this.bindings.Contains("opacity") ? this.bindings.Get("opacity").BoundVariable.Name + : this.Opacity.ToString(); + + string colorCommand = String.Format("color(\"{0}\", {1})", colorName, opacity); var formatter = new SingleBlockFormatter(colorCommand, this.obj.ToString()); return formatter.ToString(); } @@ -55,9 +60,13 @@ namespace OSCADSharp.Transforms return this.obj.Bounds(); } + private Bindings.Bindings bindings = new Bindings.Bindings(new Dictionary() { + {"color", "color" }, + {"opacity", "opacity" } + }); public override void Bind(string property, Variable variable) { - throw new NotImplementedException(); + this.bindings.Add(this, property, variable); } } }