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);
}
}
}