public void Test()
        {
            List <FlagValue> flags = new List <FlagValue> {
                new FlagValue("a", false),
                new FlagValue("b", true),
                new FlagValue("c", 10),
            };

            Assert.IsTrue(StoryModel.Test("a == false", flags));
            Assert.IsFalse(StoryModel.Test("a == true", flags));
            Assert.IsTrue(StoryModel.Test("b == true", flags));
            Assert.IsFalse(StoryModel.Test("b == false", flags));
            Assert.IsTrue(StoryModel.Test("b == 1", flags));
            Assert.IsFalse(StoryModel.Test("b == 2", flags));
            Assert.IsTrue(StoryModel.Test("c == 10", flags));
            Assert.IsFalse(StoryModel.Test("c != 10", flags));
            Assert.IsTrue(StoryModel.Test("c < 11", flags));
            Assert.IsTrue(StoryModel.Test("c > 9", flags));
            Assert.IsFalse(StoryModel.Test("c > 11", flags));
            Assert.IsFalse(StoryModel.Test("c < 9", flags));
            Assert.IsTrue(StoryModel.Test("c <= 10", flags));
            Assert.IsTrue(StoryModel.Test("c >= 10", flags));

            // TODO create a custom exception type
            Assert.Throws <System.Exception> (() => StoryModel.Test("a < true", flags));
        }