public void RecordValueEquivDiffCalc() { var index = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var seen = DeclarableParameter.CreateDeclarableParameterExpression(typeof(bool)); var s1 = new StatementRecordValue(index, new ValSimple("i", typeof(int)), seen, true); var s2 = new StatementRecordValue(index, new ValSimple("j", typeof(int)), seen, true); var r = s1.RequiredForEquivalence(s2); Assert.IsFalse(r.Item1); }
public void RecordValueEquiv3DependentVariable() { var index = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var seen = DeclarableParameter.CreateDeclarableParameterExpression(typeof(bool)); var d1 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var d2 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var s1 = new StatementRecordValue(index, new ValSimple($"{d1.RawValue}+{d2.RawValue}", typeof(int), new IDeclaredParameter[] { d1, d2 }), seen, true); var d3 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var s2 = new StatementRecordValue(index, new ValSimple($"{d3.RawValue}+{d3.RawValue}", typeof(int), new IDeclaredParameter[] { d3 }), seen, true); var r = s1.RequiredForEquivalence(s2); Assert.IsFalse(r.Item1); }
public void RecordValueEquivDifferentSeens() { var index = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var seen1 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(bool)); var s1 = new StatementRecordValue(index, new ValSimple("i", typeof(int)), seen1, true); var seen2 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(bool)); var s2 = new StatementRecordValue(index, new ValSimple("i", typeof(int)), seen2, true); var r = s1.RequiredForEquivalence(s2); Assert.IsTrue(r.Item1); Assert.AreEqual(1, r.Item2.Count()); Assert.AreEqual(seen1.RawValue, r.Item2.Where(l => l.Item1 == seen2.RawValue).First().Item2); }
public void RecordValueEquiv1DependentVariable() { var index = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var seen = DeclarableParameter.CreateDeclarableParameterExpression(typeof(bool)); var d1 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var s1 = new StatementRecordValue(index, d1, seen, true); var d2 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var s2 = new StatementRecordValue(index, d2, seen, true); var r = s1.RequiredForEquivalence(s2); Assert.IsTrue(r.Item1); Assert.AreEqual(1, r.Item2.Count()); Assert.AreEqual(d1.RawValue, r.Item2.First().Item2); }
public void RecordValueEquiv4DependentVariable() { var index = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var seen = DeclarableParameter.CreateDeclarableParameterExpression(typeof(bool)); var d1 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var d2 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var s1 = new StatementRecordValue(index, new ValSimple($"{d1.RawValue}+{d2.RawValue}", typeof(int), new IDeclaredParameter[] { d1, d2 }), seen, true); var d3 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var d4 = DeclarableParameter.CreateDeclarableParameterExpression(typeof(int)); var s2 = new StatementRecordValue(index, new ValSimple($"{d4.RawValue}+{d3.RawValue}", typeof(int), new IDeclaredParameter[] { d3, d4 }), seen, true); var r = s1.RequiredForEquivalence(s2); Assert.IsTrue(r.Item1); Assert.AreEqual(2, r.Item2.Count()); Assert.AreEqual(d2.RawValue, r.Item2.Where(l => l.Item1 == d3.RawValue).First().Item2); Assert.AreEqual(d1.RawValue, r.Item2.Where(l => l.Item1 == d4.RawValue).First().Item2); }