public void Given_different_input_should_generate_different_Guid() { var generator = new DeterministicGuidGenerator(Guid.NewGuid()); var guid1 = generator.Create("stream-1", ExpectedVersion.Any, "some-data"); var guid2 = generator.Create("stream-1", 1, "some-data"); guid2.ShouldNotBe(guid1); }
/// <summary> /// Creates a deterministic GUID. /// </summary> /// <param name="generator"> /// A <see cref="DeterministicGuidGenerator"/> instance. /// </param> /// <param name="streamId"> /// The Stream ID the message is being appended to. /// </param> /// <param name="expectedVersion"> /// The expected version of the message. /// </param> /// <param name="message"> /// A message to generate the GUID from. /// </param> /// <returns> /// A deterministically generated GUID. /// </returns> public static Guid Create( this DeterministicGuidGenerator generator, string streamId, int expectedVersion, string message) => generator.Create( Encoding.UTF8.GetBytes(message) .Concat(BitConverter.GetBytes(expectedVersion)) .Concat(Encoding.UTF8.GetBytes(streamId)).ToArray());
static MetadataMessageIdGenerator() { s_deterministicGuidGenerator = new DeterministicGuidGenerator(Guid.Parse("8D1E0B02-0D78-408E-8211-F899BE6F8AA2")); }