public void ShouldNotGenerateDeltasForNoOpsOnLists() { var blob = new TestBlob(); blob.Ilist.Add(1); AssertGenerated(blob); blob.ClearEvents(); blob.Ilist[0] = 1; AssertNotGenerated(blob); blob.Foolist.Add(new Foo { Long = 1 }); AssertGenerated(blob); blob.ClearEvents(); blob.Foolist[0] = new Foo { Long = 1 }; AssertNotGenerated(blob); blob.Slist.Add("hello"); AssertGenerated(blob); blob.ClearEvents(); blob.Slist[0] = "hello"; AssertNotGenerated(blob); }
public void ShouldNotGenerateDeltasForNoOpsOnOneOfs() { var blob = new TestBlob(); blob.Maybestring = "hello"; AssertGenerated(blob); blob.ClearEvents(); blob.Maybestring = "hello"; AssertNotGenerated(blob); blob.Maybefoo = new Foo { Long = 2L }; AssertGenerated(blob); blob.ClearEvents(); blob.Maybefoo = new Foo { Long = 2L }; AssertNotGenerated(blob); blob.Maybefoo = new Foo { Long = 2L, Str = "hi" }; AssertGenerated(blob); blob.ClearEvents(); blob.Maybeint = 2; AssertGenerated(blob); blob.ClearEvents(); blob.Maybeint = 2; AssertNotGenerated(blob); }
public void ListOfMessagesShouldHaveTheCorrectSize() { var blob = new TestBlob(); blob.Foolist.Add(new Foo()); blob.Foolist.Add(new Foo()); Assert.Equal(4, blob.CalculateSize()); }
public void Decrypt_throws_on_mismatching_tag() { var blob = TestBlob.Decode64(); blob[blob.Length - 1] += 1; Exceptions.AssertThrowsInternalError(() => Opdata01.Decrypt(blob, TestKey), "tag doesn't match"); }
public void Decrypt_throws_on_invalid_signature() { var blob = TestBlob.Decode64(); blob[0] += 1; Exceptions.AssertThrowsInternalError(() => Opdata01.Decrypt(blob, TestKey), "invalid signature"); }
public void ListOfIntsShouldHaveTheCorrectSize() { var blob = new TestBlob(); blob.Ilist.Add(0); blob.Ilist.Add(1); blob.Ilist.Add(300); Assert.Equal(6, blob.CalculateSize()); }
public void ChangesToComplexChildMessageBeStableAfterSnapshots() { var blob = populated(); var childBlob = populated(); blob.TestBlob_ = childBlob; var snapshot = blob.GenerateSnapshot(); var blobA = new TestBlob(); blobA.ApplyEvents(snapshot); AssertEventsStableWithClone(blobA, () => { blobA.TestBlob_.Bar = new Bar(); blobA.TestBlob_.Bar.Foo = new Foo(); blobA.TestBlob_.Bar.Foo.Long = 10; blobA.TestBlob_.Bar.Foo.Str = "world"; blobA.TestBlob_.Foo = new Foo(); blobA.TestBlob_.Foo.Long = 12; blobA.TestBlob_.Foo.Str = "hello"; blobA.TestBlob_.IntToString.Add(11, "world"); blobA.TestBlob_.StringToFoo.Add("helloa", new Foo { Long = 9, Str = "ha" }); blobA.TestBlob_.StringToFoo["helloa"].Str = "happy"; blobA.TestBlob_.StringToFoo["helloa"].Long = 10; blobA.TestBlob_.Foolist.Add(new Foo { Long = 123 }); blobA.TestBlob_.Foolist[2].Long = 321; blobA.TestBlob_.Foolist.Add(new Foo { Long = 1, Str = "la", Foo_ = new Foo() }); blobA.TestBlob_.Foolist[3].Str = "lalala"; blobA.TestBlob_.Foolist[3].Long = 2; blobA.TestBlob_.Ilist.Add(12); blobA.TestBlob_.Ilist.Add(51); blobA.TestBlob_.Maybefoo = new Foo { Long = 42, Str = "maybe_foo_who_knows" }; blobA.TestBlob_.Timestamp = new Timestamp { Seconds = 1235, Nanos = 987 }; blobA.TestBlob_.Duration = new Duration { Seconds = 112, Nanos = 2 }; }); }
public void ShouldProduceIdenticalTestBlobWithMergeFrom() { var blob = populated(); var newBlob = new TestBlob(); newBlob.MergeFrom(blob); Assert.Equal(blob, newBlob); Assert.Equal(newBlob, blob); }
public void MapOfIntToStringShouldHaveTheCorrectSize() { var blob = new TestBlob(); blob.IntToString.Add(0, ""); blob.IntToString.Add(10, ""); blob.IntToString.Add(1, "hi"); blob.IntToString.Add(300, "hi"); Assert.Equal(23, blob.CalculateSize()); }
public void OneOfFieldShouldSetProperly() { var blob = new TestBlob(); blob.Maybefoo = new Foo(); Assert.Equal(TestBlob.TestOneofCase.Maybefoo, blob.TestCase); blob.Maybeint = 2; Assert.Null(blob.Maybefoo); Assert.Equal(TestBlob.TestOneofCase.Maybeint, blob.TestCase); }
public void MapOfStringToFooShouldHaveTheCorrectSize() { var blob = new TestBlob(); blob.StringToFoo.Add("", new Foo()); blob.StringToFoo.Add("hi", new Foo()); blob.StringToFoo.Add("bye", new Foo { Long = 300 }); Assert.Equal(24, blob.CalculateSize()); }
public void EventsShouldBeClearedAfterGeneratingSnapshot() { var blob = populated(); var snapshot = blob.GenerateSnapshot(); var events = blob.GenerateEvents(); var newBlob = new TestBlob(); newBlob.ApplyEvents(snapshot); newBlob.ApplyEvents(events); Assert.Equal(blob, newBlob); }
public void AppliedDeltasShouldEqual() { var blob = populated(); var root = blob.PeekEvents(); blob.ClearEvents(); var newBlob = new TestBlob(); newBlob.ApplyEvents(root); Assert.Equal(blob, newBlob); }
public void ShouldNotGenerateEventsWhenDisabled() { var blob = new TestBlob(); // disable events blob.EventsEnabled = false; blob.Bar = new Bar(); blob.Bar.Foo = new Foo(); blob.Bar.Foo.Long = 10; blob.Bar.Foo.Str = "world"; blob.Foo = new Foo(); blob.Foo.Long = 12; blob.Foo.Str = "hello"; blob.IntToString.Add(10, "world"); blob.StringToFoo.Add("hello", new Foo { Long = 9, Str = "ha" }); blob.StringToFoo["hello"].Str = "happy"; blob.StringToFoo["hello"].Long = 10; blob.Foolist.Add(new Foo { Long = 123 }); blob.Foolist[0].Long = 321; blob.Foolist.Add(new Foo { Long = 1, Str = "la", Foo_ = new Foo() }); blob.Foolist[1].Str = "lalala"; blob.Foolist[1].Long = 2; blob.Ilist.Add(12); blob.Ilist.Add(51); blob.Maybefoo = new Foo { Long = 42, Str = "maybe_foo_who_knows" }; blob.Timestamp = new Timestamp { Seconds = 1234, Nanos = 987 }; blob.Duration = new Duration { Seconds = 111, Nanos = 2 }; AssertNotGenerated(blob); }
private TestBlob populated() { var blob = new TestBlob(); blob.Bar = new Bar(); blob.Bar.Foo = new Foo(); blob.Bar.Foo.Long = 10; blob.Bar.Foo.Str = "world"; blob.Foo = new Foo(); blob.Foo.Long = 12; blob.Foo.Str = "hello"; blob.IntToString.Add(10, "world"); blob.StringToFoo.Add("hello", new Foo { Long = 9, Str = "ha" }); blob.StringToFoo["hello"].Str = "happy"; blob.StringToFoo["hello"].Long = 10; blob.Foolist.Add(new Foo { Long = 123 }); blob.Foolist[0].Long = 321; blob.Foolist.Add(new Foo { Long = 1, Str = "la", Foo_ = new Foo() }); blob.Foolist[1].Str = "lalala"; blob.Foolist[1].Long = 2; blob.Ilist.Add(12); blob.Ilist.Add(51); blob.Maybefoo = new Foo { Long = 42, Str = "maybe_foo_who_knows" }; blob.Timestamp = new Timestamp { Seconds = 1234, Nanos = 987 }; blob.Duration = new Duration { Seconds = 111, Nanos = 2 }; return(blob); }
public void ShouldNotGenerateDeltasForNoOpsOnPrimitiveFields() { var blob = new TestBlob(); blob.Foo = new Foo(); AssertGenerated(blob); blob.ClearEvents(); blob.Foo = new Foo(); AssertNotGenerated(blob); blob.Foo.Long = 0L; AssertNotGenerated(blob); blob.Foo.Long = 1L; AssertGenerated(blob); blob.ClearEvents(); blob.Foo.Long = 1L; AssertNotGenerated(blob); blob.Foo.Long = 0L; AssertGenerated(blob); blob.ClearEvents(); blob.Foo.Str = "1 long please"; AssertGenerated(blob); blob.ClearEvents(); blob.Foo.Str = "1 long please"; AssertNotGenerated(blob); blob.Foo.Str = ""; AssertGenerated(blob); blob.ClearEvents(); blob.Foo.Str = ""; AssertNotGenerated(blob); }
public void HaveOneForHashCode() { var blob = new TestBlob(); Assert.Equal(1, blob.GetHashCode()); }
public void ChangesToComplexChildMessageShouldHaveCorrectPath() { var blob = populated(); var childBlob = populated(); blob.TestBlob_ = childBlob; var snapshot = blob.GenerateSnapshot(); var blobA = new TestBlob(); blobA.ApplyEvents(snapshot); Assert.Equal(blob, blobA); blob.TestBlob_.Bar = new Bar(); blob.TestBlob_.Bar.Foo = new Foo(); blob.TestBlob_.Bar.Foo.Long = 10; blob.TestBlob_.Bar.Foo.Str = "world"; blob.TestBlob_.Foo = new Foo(); blob.TestBlob_.Foo.Long = 12; blob.TestBlob_.Foo.Str = "hello"; blob.TestBlob_.IntToString.Add(11, "world"); blob.TestBlob_.StringToFoo.Add("helloa", new Foo { Long = 9, Str = "ha" }); blob.TestBlob_.StringToFoo["helloa"].Str = "happy"; blob.TestBlob_.StringToFoo["helloa"].Long = 10; blob.TestBlob_.Foolist.Add(new Foo { Long = 123 }); blob.TestBlob_.Foolist[2].Long = 321; blob.TestBlob_.Foolist.Add(new Foo { Long = 1, Str = "la", Foo_ = new Foo() }); blob.TestBlob_.Foolist[3].Str = "lalala"; blob.TestBlob_.Foolist[3].Long = 2; blob.TestBlob_.Ilist.Add(12); blob.TestBlob_.Ilist.Add(51); blob.TestBlob_.Maybefoo = new Foo { Long = 42, Str = "maybe_foo_who_knows" }; blob.TestBlob_.Timestamp = new Timestamp { Seconds = 1235, Nanos = 987 }; blob.TestBlob_.Duration = new Duration { Seconds = 112, Nanos = 2 }; var events = blob.GenerateEvents(); foreach (var e in events.Events) { // TestBlob test_blob = 16; // each event path should start with the number 16 Assert.Equal(16, e.Path[0]); } var blobB = new TestBlob(); blobB.ApplyEvents(snapshot); blobB.ApplyEvents(events); Assert.Equal(blob, blobB); }
public void CalculateSizeOfZero() { var blob = new TestBlob(); Assert.Equal(0, blob.CalculateSize()); }
public void Decrypt_bytes_returns_plaintext() { Assert.Equal(256, Opdata01.Decrypt(TestBlob.Decode64(), TestKey).Length); }
public void ShouldNotGenerateDeltasForNoOpsOnMaps() { var blob = new TestBlob(); blob.IntToString[0] = "a"; AssertGenerated(blob); blob.ClearEvents(); blob.IntToString[0] = "a"; AssertNotGenerated(blob); blob.IntToString[0] = "b"; AssertGenerated(blob); blob.ClearEvents(); blob.IntToString[0] = "a"; AssertGenerated(blob); blob.ClearEvents(); blob.IntToString.Remove(1); AssertNotGenerated(blob); blob.IntToString.Remove(0); AssertGenerated(blob); blob.ClearEvents(); blob.IntToString.Remove(0); AssertNotGenerated(blob); blob.StringToFoo["a"] = new Foo(); AssertGenerated(blob); blob.ClearEvents(); blob.StringToFoo["a"] = new Foo { Long = 1 }; AssertGenerated(blob); blob.ClearEvents(); blob.StringToFoo["a"] = new Foo { Long = 1, Str = "test" }; AssertGenerated(blob); blob.ClearEvents(); blob.StringToFoo["a"] = new Foo { Long = 1, Str = "test" }; AssertNotGenerated(blob); blob.StringToFoo["a"] = new Foo(); AssertGenerated(blob); blob.ClearEvents(); blob.StringToFoo.Remove("a"); AssertGenerated(blob); blob.ClearEvents(); blob.StringToFoo.Remove("a"); AssertNotGenerated(blob); blob.StringToFoo.Remove("b"); AssertNotGenerated(blob); }
public void ShouldProduceDeltasWithTheCorrectPaths() { var emptyBlob = new TestBlob(); var events = emptyBlob.PeekEvents(); Assert.Equal(0, events.Events.Count); var blob = new TestBlob(); blob.Bar = new Bar(); blob.Bar.Foo = new Foo(); Assert.Equal(2, blob.PeekEvents().Events.Count); blob.ClearEvents(); blob.Bar.Foo.Long = 1; AssertDeltaPath(blob, new[] { 1, 1, 1 }); blob.Bar.Foo.Str = "test"; AssertDeltaPath(blob, new[] { 1, 1, 2 }); blob.Foo = new Foo(); AssertDeltaPath(blob, new[] { 2 }); blob.Foo.Long = 4; AssertDeltaPath(blob, new[] { 2, 1 }); blob.Foo.Str = "asdf"; AssertDeltaPath(blob, new[] { 2, 2 }); blob.IntToString.Add(0, ""); AssertDeltaPath(blob, new[] { 3 }); blob.IntToString.Add(1, "asdf"); AssertDeltaPath(blob, new[] { 3 }); blob.IntToString.Remove(0); AssertDeltaPath(blob, new[] { 3 }); blob.IntToString.Remove(1); AssertDeltaPath(blob, new[] { 3 }); blob.StringToFoo.Add("a", new Foo()); AssertDeltaPath(blob, new[] { 4 }); blob.StringToFoo.Add("b", new Foo { Long = 12 }); AssertDeltaPath(blob, new[] { 4 }); blob.StringToFoo.Remove("a"); AssertDeltaPath(blob, new[] { 4 }); blob.StringToFoo.Remove("b"); AssertDeltaPath(blob, new[] { 4 }); blob.Ilist.Add(20); AssertDeltaPath(blob, new[] { 5 }); blob.Slist.Add("as"); AssertDeltaPath(blob, new[] { 6 }); blob.Foolist.Add(new Foo()); AssertDeltaPath(blob, new[] { 7 }); }