feat(batch8): implement store enum parity group B
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using Shouldly;
|
||||
using ZB.MOM.NatsNet.Server;
|
||||
|
||||
@@ -223,6 +224,104 @@ public class StoreTypesTests
|
||||
StoreParity.IsPermissionError(null).ShouldBeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RetentionPolicy_StringParity_ReturnsExpectedText()
|
||||
{
|
||||
RetentionPolicy.LimitsPolicy.String().ShouldBe("Limits");
|
||||
RetentionPolicy.InterestPolicy.String().ShouldBe("Interest");
|
||||
RetentionPolicy.WorkQueuePolicy.String().ShouldBe("WorkQueue");
|
||||
((RetentionPolicy)99).String().ShouldBe("Unknown Retention Policy");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RetentionPolicy_JsonParity_RoundTripsExpectedTokens()
|
||||
{
|
||||
JsonSerializer.Serialize(RetentionPolicy.LimitsPolicy).ShouldBe("\"limits\"");
|
||||
JsonSerializer.Serialize(RetentionPolicy.InterestPolicy).ShouldBe("\"interest\"");
|
||||
JsonSerializer.Serialize(RetentionPolicy.WorkQueuePolicy).ShouldBe("\"workqueue\"");
|
||||
|
||||
JsonSerializer.Deserialize<RetentionPolicy>("\"limits\"").ShouldBe(RetentionPolicy.LimitsPolicy);
|
||||
JsonSerializer.Deserialize<RetentionPolicy>("\"interest\"").ShouldBe(RetentionPolicy.InterestPolicy);
|
||||
JsonSerializer.Deserialize<RetentionPolicy>("\"workqueue\"").ShouldBe(RetentionPolicy.WorkQueuePolicy);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RetentionPolicy_UnmarshalInvalid_Throws()
|
||||
{
|
||||
Should.Throw<JsonException>(() => JsonSerializer.Deserialize<RetentionPolicy>("\"bogus\""));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DiscardPolicy_StringAndJsonParity_MatchesGo()
|
||||
{
|
||||
DiscardPolicy.DiscardOld.String().ShouldBe("DiscardOld");
|
||||
DiscardPolicy.DiscardNew.String().ShouldBe("DiscardNew");
|
||||
((DiscardPolicy)99).String().ShouldBe("Unknown Discard Policy");
|
||||
|
||||
JsonSerializer.Serialize(DiscardPolicy.DiscardOld).ShouldBe("\"old\"");
|
||||
JsonSerializer.Serialize(DiscardPolicy.DiscardNew).ShouldBe("\"new\"");
|
||||
JsonSerializer.Deserialize<DiscardPolicy>("\"OLD\"").ShouldBe(DiscardPolicy.DiscardOld);
|
||||
JsonSerializer.Deserialize<DiscardPolicy>("\"new\"").ShouldBe(DiscardPolicy.DiscardNew);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StorageType_StringAndJsonParity_MatchesGo()
|
||||
{
|
||||
StorageType.MemoryStorage.String().ShouldBe("Memory");
|
||||
StorageType.FileStorage.String().ShouldBe("File");
|
||||
((StorageType)99).String().ShouldBe("Unknown Storage Type");
|
||||
|
||||
JsonSerializer.Serialize(StorageType.MemoryStorage).ShouldBe("\"memory\"");
|
||||
JsonSerializer.Serialize(StorageType.FileStorage).ShouldBe("\"file\"");
|
||||
JsonSerializer.Deserialize<StorageType>("\"memory\"").ShouldBe(StorageType.MemoryStorage);
|
||||
JsonSerializer.Deserialize<StorageType>("\"file\"").ShouldBe(StorageType.FileStorage);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AckPolicy_JsonParity_MatchesGo()
|
||||
{
|
||||
JsonSerializer.Serialize(AckPolicy.AckNone).ShouldBe("\"none\"");
|
||||
JsonSerializer.Serialize(AckPolicy.AckAll).ShouldBe("\"all\"");
|
||||
JsonSerializer.Serialize(AckPolicy.AckExplicit).ShouldBe("\"explicit\"");
|
||||
|
||||
JsonSerializer.Deserialize<AckPolicy>("\"none\"").ShouldBe(AckPolicy.AckNone);
|
||||
JsonSerializer.Deserialize<AckPolicy>("\"all\"").ShouldBe(AckPolicy.AckAll);
|
||||
JsonSerializer.Deserialize<AckPolicy>("\"explicit\"").ShouldBe(AckPolicy.AckExplicit);
|
||||
Should.Throw<JsonException>(() => JsonSerializer.Deserialize<AckPolicy>("\"bad\""));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReplayPolicy_JsonParity_MatchesGo()
|
||||
{
|
||||
JsonSerializer.Serialize(ReplayPolicy.ReplayInstant).ShouldBe("\"instant\"");
|
||||
JsonSerializer.Serialize(ReplayPolicy.ReplayOriginal).ShouldBe("\"original\"");
|
||||
|
||||
JsonSerializer.Deserialize<ReplayPolicy>("\"instant\"").ShouldBe(ReplayPolicy.ReplayInstant);
|
||||
JsonSerializer.Deserialize<ReplayPolicy>("\"original\"").ShouldBe(ReplayPolicy.ReplayOriginal);
|
||||
Should.Throw<JsonException>(() => JsonSerializer.Deserialize<ReplayPolicy>("\"bad\""));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DeliverPolicy_JsonParity_MapsUndefinedToAll()
|
||||
{
|
||||
JsonSerializer.Serialize(DeliverPolicy.DeliverAll).ShouldBe("\"all\"");
|
||||
JsonSerializer.Serialize(DeliverPolicy.DeliverLast).ShouldBe("\"last\"");
|
||||
JsonSerializer.Serialize(DeliverPolicy.DeliverLastPerSubject).ShouldBe("\"last_per_subject\"");
|
||||
JsonSerializer.Serialize(DeliverPolicy.DeliverNew).ShouldBe("\"new\"");
|
||||
JsonSerializer.Serialize(DeliverPolicy.DeliverByStartSequence).ShouldBe("\"by_start_sequence\"");
|
||||
JsonSerializer.Serialize(DeliverPolicy.DeliverByStartTime).ShouldBe("\"by_start_time\"");
|
||||
JsonSerializer.Serialize((DeliverPolicy)99).ShouldBe("\"undefined\"");
|
||||
|
||||
JsonSerializer.Deserialize<DeliverPolicy>("\"all\"").ShouldBe(DeliverPolicy.DeliverAll);
|
||||
JsonSerializer.Deserialize<DeliverPolicy>("\"undefined\"").ShouldBe(DeliverPolicy.DeliverAll);
|
||||
JsonSerializer.Deserialize<DeliverPolicy>("\"last\"").ShouldBe(DeliverPolicy.DeliverLast);
|
||||
JsonSerializer.Deserialize<DeliverPolicy>("\"last_per_subject\"").ShouldBe(DeliverPolicy.DeliverLastPerSubject);
|
||||
JsonSerializer.Deserialize<DeliverPolicy>("\"new\"").ShouldBe(DeliverPolicy.DeliverNew);
|
||||
JsonSerializer.Deserialize<DeliverPolicy>("\"by_start_sequence\"").ShouldBe(DeliverPolicy.DeliverByStartSequence);
|
||||
JsonSerializer.Deserialize<DeliverPolicy>("\"by_start_time\"").ShouldBe(DeliverPolicy.DeliverByStartTime);
|
||||
Should.Throw<JsonException>(() => JsonSerializer.Deserialize<DeliverPolicy>("\"bad\""));
|
||||
}
|
||||
|
||||
private static void AppendUVarInt(List<byte> buffer, ulong value)
|
||||
{
|
||||
while (value >= 0x80)
|
||||
|
||||
Reference in New Issue
Block a user