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_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 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 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 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 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 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 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); }
private ITimelineService CreateTimeline(IServiceProvider x) { var context = x.GetService <ChronicityContext>(); var tl = new TimeLineService(context); //tl.RegisterReaction(new FeederRefill()); return(tl); }
public EntityRegistration() { var options = new DbContextOptionsBuilder <ChronicityContext>() .UseInMemoryDatabase(databaseName: "EntityRegistration") .Options; _service = new TimeLineService(new ChronicityContext(options)); }
public ClusterFilters() { var options = new DbContextOptionsBuilder <ChronicityContext>() .UseInMemoryDatabase(databaseName: "ClusterFilters") .Options; _context = new ChronicityContext(options); _service = new TimeLineService(_context); }
public void RegisteringEvent_Must_Be_RegisteredEntity() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var e = new NewEvent() { On = "2001/01/01", Type = "MyEventType" }; Assert.Throws <Exception>(() => service.RegisterEvent(e)); }
public void RegisteringObservation_IsReturned_In_EventType_List() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var e1 = new NewEvent() { On = "2001/01/01 01:01", Type = "MyEventType", Entities = new [] { "E1" } }; service.RegisterEvent(e1); Assert.Equal("MyEventType", service.SearchEventTypes("My").First()); }
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"]); }
public void RegisteringEvent_CanBeRetrieved() { _context.Database.EnsureDeleted(); var service = new TimeLineService(_context); var e = new NewEvent() { On = "2001/01/01", Type = "MyEventType", Entities = new [] { "E1" } }; service.RegisterEvent(e); var contexts = service.SearchEvents(new string[] {}); Assert.Single(contexts); }
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"]); }