diff --git a/.gitignore b/.gitignore
index fda73e7..621ed09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,3 +23,4 @@ content
/ConsoleApp1-2.psess
/ConsoleApp1-1.psess
/MicroRuleEngine/MRE1.cs
+privateKey.key
diff --git a/MicroRuleEngine.Core.Tests/ExampleUsage.cs b/MicroRuleEngine.Core.Tests/ExampleUsage.cs
new file mode 100644
index 0000000..42482a6
--- /dev/null
+++ b/MicroRuleEngine.Core.Tests/ExampleUsage.cs
@@ -0,0 +1,282 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using MicroRuleEngine.Core.Tests.Models;
+
+namespace MicroRuleEngine.Tests
+{
+ ///
+ /// Summary description for UnitTest1
+ ///
+ [TestClass]
+ public class ExampleUsage
+ {
+ [TestMethod]
+ public void ChildPropertiesOfNull()
+ {
+ Order order = GetOrder();
+ order.Customer = null;
+ Rule rule = new Rule
+ {
+ MemberName = "Customer.Country.CountryCode",
+ Operator = ExpressionType.Equal.ToString("g"),
+ TargetValue = "AUS"
+ };
+ MRE engine = new MRE();
+ var compiledRule = engine.CompileRule(rule);
+ bool passes = compiledRule(order);
+ Assert.IsFalse(passes);
+ }
+
+ [TestMethod]
+ public void GetAllField()
+ {
+ Order order = GetOrder();
+
+ var type = order.GetType();
+ var members = MRE.Member.GetFields(type);
+ Assert.IsTrue(
+ members.Where(x=> x.Name == "Customer.Country.CountryCode" && x.PossibleOperators.Any(y=> y.Name == "StartsWith")).Any()
+ );
+ }
+
+ [TestMethod]
+ public void CoerceMethod()
+ {
+ Order order = GetOrder();
+ Rule rule = new Rule
+ {
+ MemberName = "Codes",
+ Operator = "Contains",
+ TargetValue = "243",
+ Inputs = new List