Exemplo n.º 1
0
        public void RoundTripValuesArePreserved()
        {
            string savedState = string.Empty;

            // Save the state string when SaveProgramState(s) called
            this.provider
            .When(x => x.SaveProgramState(Arg.Any <string>()))
            .Do(x => savedState = (string)x.Args()[0]);

            // Set state information and dispose the state object to save.
            var state = new ProgramState(this.provider);

            state.Set("Age", 55);
            state.Set("Address", new { Street = street, City = city, Garbage = false });
            state.Set(nameof(BowAndSkewMapDatum), new { FeetCounter = 5 });
            state.Set(nameof(PatternRepeatMapDatum), new { FeetCounter = 4 });
            state.Save();
            this.provider
            .Received(1);

            // Be sure that the state can be reconstituted
            this.provider = Substitute.For <IProgramStateProvider>();
            this.provider.GetProgramState().Returns(savedState);
            var state2 = new ProgramState(this.provider);

            Assert.Equal(55, state2.Get <int>("Age"));
            var address = state2.GetSubState("Address");

            Assert.Equal(street, address.Get <string>("Street"));
            Assert.Equal(city, address.Get <string>("City"));
            Assert.False(address.Get <bool>("Garbage"));

            Assert.Equal(5, state2.Get <BowAndSkewMapDatum>(nameof(BowAndSkewMapDatum)).FeetCounter);
            Assert.Equal(4, state2.Get <PatternRepeatMapDatum>(nameof(PatternRepeatMapDatum)).FeetCounter);
        }
Exemplo n.º 2
0
 public ProgramState(IProgramStateProvider provider)
 {
     this.provider = provider;
     try
     {
         string text = provider.GetProgramState() ?? "{}";
         this.root = JObject.Parse(text);
     }
     catch (Exception)
     {
         this.root = new JObject();
     }
 }
Exemplo n.º 3
0
 public ProgramStateTests()
 {
     this.provider = Substitute.For <IProgramStateProvider>();
     this.provider.GetProgramState().Returns("{}");
 }