public void FilterByBefore_ReturnsResults() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o = new Observation() { On = "2001/01/01", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; var o2 = new Observation() { On = "2001/01/04", Entity = "E1", Expressions = new[] { "State.MyVal=More" } }; service.RegisterObservation(o); service.RegisterObservation(o2); var result = service.SearchState(new[] { "Before=1/02/2001" }); Assert.Equal(new DateTime(2001, 1, 1), result.First().Start); Assert.Equal(new DateTime(2001, 1, 2), result.First().End); Assert.Equal("Hello World", result.First().Value); Assert.Equal(1, result.Count); }
public void FilterByKey_LessThan_Returns_Only_Match_Results() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o = new Observation() { On = "2001/01/01", Entity = "E1", Expressions = new[] { "State.MyVal=1" } }; var o2 = new Observation() { On = "2001/01/02", Entity = "E1", Expressions = new[] { "State.MyVal=10" } }; service.RegisterObservation(o); service.RegisterObservation(o2); var result = service.SearchState(new[] { "State.MyVal < 10" }); Assert.Equal("E1", result.First().Entity); Assert.Equal(new DateTime(2001, 1, 1), result.First().Start); Assert.Equal(new DateTime(2001, 1, 2).AddSeconds(-1), result.First().End); Assert.Equal(1, result.Count); }
public void FilterByKey_ReturnsResults() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o = new Observation() { On = "2001/01/01", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; var o2 = new Observation() { On = "2001/01/02", Entity = "E1", Expressions = new[] { "State.MyVal=More" } }; service.RegisterObservation(o); service.RegisterObservation(o2); var result = service.SearchState(new[] { "State.MyVal=Hello World" }).First(); Assert.Equal("E1", result.Entity); Assert.Equal(new DateTime(2001, 1, 1), result.Start); Assert.Equal(new DateTime(2001, 1, 2).AddSeconds(-1), result.End); }
public void FilterByAfter_Between_Observations_ReturnsResults() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o = new Observation() { On = "2001/01/01", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; var o2 = new Observation() { On = "2001/01/03", Entity = "E1", Expressions = new[] { "State.MyVal=More" } }; service.RegisterObservation(o); service.RegisterObservation(o2); var result = service.SearchState(new[] { "After=1/02/2001" }); Assert.Equal(2, result.Count()); Assert.Equal(new DateTime(2001, 1, 2), result.First().Start); Assert.Equal(new DateTime(2001, 1, 3).AddSeconds(-1), result.First().End); Assert.Equal("Hello World", result.First().Value); Assert.Equal(new DateTime(2001, 1, 3), result.Skip(1).First().Start); Assert.Null(result.Skip(1).First().End); Assert.Equal("More", result.Skip(1).First().Value); }
public void FilterEvent_BasicStateMatch() { _context.Database.EnsureDeleted(); var e1 = new NewEvent() { On = "2001/01/01 01:01", Type = "MyEventType", Entities = new string[] { "E1" } }; var o1 = new Observation() { On = "2001/01/01 01:01", Type = "MyObservationType", Entity = "E1", Expressions = new string[] { "State.MyVal=Hello World" } }; _service.RegisterObservation(o1); _service.RegisterEvent(e1); var match = _service.SearchEvents(new string[] { "State.MyVal=Hello World" }); var nonMatch = _service.SearchEvents(new string[] { "State.MyVal=Not The One!" }); Assert.Single(match); Assert.Empty(nonMatch); }
public void FilterByAfter_AfterEndOfLine_ReturnsResults() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o = new Observation() { On = "2001/01/01", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; var o2 = new Observation() { On = "2001/01/03", Entity = "E1", Expressions = new[] { "State.MyVal=More" } }; service.RegisterObservation(o); service.RegisterObservation(o2); var result = service.SearchState(new[] { "After=1/04/2001" }).First(); Assert.Equal(new DateTime(2001, 1, 4), result.Start); Assert.Equal("More", result.Value); Assert.Null(result.End); }
public void RegisteringObservation_Fires_EventAgent_Out_Of_Order() { _context.Database.EnsureDeleted(); var agentMock = new Mock <IStateChangeReaction>(); var service = new TimeLineService(_context); service.RegisterReaction(agentMock.Object); var o1 = new Observation() { On = "2001/01/01", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; var o2 = new Observation() { On = "2001/01/02", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World Again" } }; service.RegisterObservation(o2); service.RegisterObservation(o1); agentMock.Verify(x => x.OnChange("E1", "MyVal", "Hello World", "Hello World Again", "01/02/2001 00:00:00.0000000")); }
public void RegisteringObservation_StateIsMerged_Chronologically() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o1 = new Observation() { On = "2001/01/01 01:01", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; var o2 = new Observation() { On = "2001/01/01 01:02", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyNextVal=Hello World Again" } }; service.RegisterObservation(o1); service.RegisterObservation(o2); Assert.False(service.GetEntityState("E1", "2001/01/01 01:01").ContainsKey("MyNextVal")); }
public void RegisteringObservation_StateIsOverwritten() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o1 = new Observation() { On = "2001/01/01 01:01", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; var o2 = new Observation() { On = "2001/01/01 01:02", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyNextVal=Hello World Again" } }; service.RegisterObservation(o1); service.RegisterObservation(o2); var contexts = service.SearchEvents(new string[] { }).OrderByDescending(x => x.On); Assert.Equal("Hello World Again", service.GetEntityState("E1", "2001/01/01 01:02")["MyNextVal"]); }
public void RegisteringObservation_StateIsMerged_Simultaneously() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o1 = new Observation() { On = "2001/01/01 01:01", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; var o2 = new Observation() { On = "2001/01/01 01:01", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyNextVal=Hello World Again" } }; service.RegisterObservation(o1); service.RegisterObservation(o2); Assert.Equal("Hello World", service.GetEntityState("E1", "2001/01/01 01:01")["MyVal"]); Assert.Equal("Hello World Again", service.GetEntityState("E1", "2001/01/01 01:01")["MyNextVal"]); }
public void Entity_State_Tracked() { var e1 = new NewEvent() { On = "2001/01/01 01:01", Type = "MyEventType", Entities = new [] { "E1" } }; var o1 = new Observation() { On = "2001/01/01 01:01", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; var e2 = new NewEvent() { On = "2001/01/01 01:02", Type = "MyEventType", Entities = new[] { "E1" } }; var o2 = new Observation() { On = "2001/01/01 01:02", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World Again" } }; _service.RegisterObservation(o1); _service.RegisterEvent(e1); _service.RegisterObservation(o2); _service.RegisterEvent(e2); var state1 = _service.GetEntityState("E1", "2001 /01/01 01:01"); var state2 = _service.GetEntityState("E1", "2001/01/01 01:02"); var state3 = _service.GetEntityState("BADID", "2001/01/01 01:02"); Assert.Equal("Hello World", state1["MyVal"]); Assert.Equal("Hello World Again", state2["MyVal"]); Assert.False(state3.ContainsKey("MyVal")); }
public void RegisteringObservation_StateIsMerged_Reverse_Chronologically() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o1 = new Observation() { On = "2001/01/01 01:03", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyNextVal=3" } }; var o2 = new Observation() { On = "2001/01/01 01:02", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyNextVal=2" } }; var o3 = new Observation() { On = "2001/01/01 01:01", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyNextVal=1" } }; service.RegisterObservation(o1); service.RegisterObservation(o2); service.RegisterObservation(o3); Assert.Equal("1", service.GetEntityState("E1", "2001/01/01 01:01")["MyNextVal"]); Assert.Equal("2", service.GetEntityState("E1", "2001/01/01 01:02")["MyNextVal"]); Assert.Equal("3", service.GetEntityState("E1", "2001/01/01 01:03")["MyNextVal"]); }
public void RegisteringObservation_StateIsSet() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var o = new Observation() { On = "2001/01/01", Type = "MyEventType", Entity = "E1", Expressions = new[] { "State.MyVal=Hello World" } }; service.RegisterObservation(o); Assert.Equal("Hello World", service.GetEntityState("E1", "2001/01/01")["MyVal"]); }