public void Literal_() { // test implplicit overload Literal <int> literal = 10; Assert.AreEqual(10, literal.Value, "Int literal"); Assert.AreEqual(true, literal.IsInteger, "Reports being an integer"); ILiteral litI = literal; litI.Set(10.5); Assert.AreEqual(10, literal.Value, "Int literal converts doublt to int"); litI = new Literal <double>(); litI.Set(10.5); Assert.AreEqual(10.5, litI.Value, "Double literal returns double"); Assert.AreEqual(false, litI.IsInteger, "Double doesn't report being an integer"); Assert.AreEqual("10.5", litI.ToString(), "ToString works"); }