public void CopyEqualsToOriginal() { BuildsBinding binding = FakeGenerator.GetBuildsBinding(); BuildsBinding copy = binding.DeepClone(); Assert.True(binding.Equals(copy)); Assert.Equal(binding.GetHashCode(), copy.GetHashCode()); }
public void Transitivity() { BuildsBinding a = FakeGenerator.GetBuildsBinding(); BuildsBinding b = FakeGenerator.GetBuildsBinding(); BuildsBinding c = FakeGenerator.GetBuildsBinding(); bool ab = a.Equals(b), ac = a.Equals(c), bc = b.Equals(c); Assert.Equal(ab && ac, bc); }
public void RestoreFromEvents_Success() { Guid distributionId = Guid.NewGuid(); Metadata metadata = new Metadata() { AggregateId = distributionId }; List <User> owners = FakeGenerator.Users.Generate(4); LifeCycleState[] lifeCycleStates = Enum.GetValues(typeof(LifeCycleState)).Cast <LifeCycleState>().ToArray(); string[] lifeCycleStateRules = lifeCycleStates.Select(x => x.ToString()).ToArray(); BuildsBinding buildsBinding1 = FakeGenerator.GetBuildsBinding(); BuildsBinding buildsBinding2 = FakeGenerator.GetBuildsBinding(); BuildsBinding buildsBinding3 = FakeGenerator.GetBuildsBinding(); Guid[] newBuilds1 = { Guid.NewGuid(), Guid.NewGuid() }; Guid[] newBuilds2 = { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() }; var fakeBuildBinding = new Dictionary <BuildsBinding, Guid[]>() { [buildsBinding1] = new Guid[] { Guid.NewGuid(), Guid.NewGuid() }, [buildsBinding2] = new Guid[] {}, [buildsBinding3] = new Guid[] { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() }, }; var distribution = new Distribution(new List <Event> { new DistributionCreated(distributionId, DistributionName, new User[] { owners[0] }, new LifeCycleState[] { lifeCycleStates[0] }, Array.Empty <string>(), metadata), new DistributionOwnersAdded(new User[] { owners[1], owners[2] }, metadata), new DistributionOwnersRemoved(new User[] { owners[0], owners[2] }, metadata), new DistributionOwnersAdded(new User[] { owners[0], owners[2], owners[3] }, metadata), new DistributionAvailableLifeCyclesAdded(new LifeCycleState[] { lifeCycleStates[1], lifeCycleStates[2] }, metadata), new DistributionAvailableLifeCyclesRemoved(new LifeCycleState[] { lifeCycleStates[2], lifeCycleStates[1], lifeCycleStates[0] }, metadata), new DistributionAvailableLifeCyclesAdded(lifeCycleStates, metadata), new DistributionLifeCycleStateRulesAdded(new string[] { lifeCycleStateRules[1], lifeCycleStateRules[2] }, metadata), new DistributionLifeCycleStateRulesRemoved(new string[] { lifeCycleStateRules[2] }, metadata), new DistributionLifeCycleStateRulesRemoved(new string[] { lifeCycleStateRules[1] }, metadata), new DistributionLifeCycleStateRulesAdded(lifeCycleStateRules, metadata), new BuildBindingsAdded(fakeBuildBinding, metadata), new BuildBindingsRemoved(fakeBuildBinding.Take(1).ToDictionary(x => x.Key, x => x.Value), metadata), new BuildsToBuildsBindingAdded(buildsBinding2, newBuilds1, metadata), new BuildFromBuildsBindingRemoved(buildsBinding3, fakeBuildBinding[buildsBinding3].Take(3).ToArray(), metadata), new BuildsToBuildsBindingAdded(buildsBinding2, newBuilds2, metadata), new BuildBindingsAdded(fakeBuildBinding.Take(1).ToDictionary(x => x.Key, x => x.Value), metadata), new BuildsToBuildsBindingAdded(buildsBinding1, newBuilds1, metadata), }); AssertDistribution(distribution, owners, lifeCycleStates, lifeCycleStateRules); Assert.Equal(new Dictionary <BuildsBinding, List <Guid> >() {
public void Symmetry() { BuildsBinding a = FakeGenerator.GetBuildsBinding(); BuildsBinding b = FakeGenerator.GetBuildsBinding(); bool primary = a.Equals(b), backwards = b.Equals(a); Assert.Equal(primary, backwards); }
/// <summary> /// Удаляет сборки из привязки. /// </summary> /// <param name="buildBinding">Привязка к сборкам.</param> /// <param name="buildIds">Идентификаторы сборок.</param> public void RemoveBuildsFromBinding(BuildsBinding buildBinding, Guid[] buildIds) { if (!BindingToBuilds.ContainsKey(buildBinding)) { return; } var buildsToRemove = buildIds.Distinct().Intersect(BindingToBuilds[buildBinding]); if (buildsToRemove.IsEmpty()) { return; } Apply(new BuildFromBuildsBindingRemoved(buildBinding, buildsToRemove.ToArray(), CreateMetadata())); }
/// <summary> /// Удаляет новые сборки в привязку. /// </summary> /// <param name="buildBinding">Привязка к сборкам.</param> /// <param name="buildIds">Идентификаторы новых сборок.</param> public void AddBuildsToBinding(BuildsBinding buildBinding, Guid[] buildIds) { if (!BindingToBuilds.ContainsKey(buildBinding)) { return; } var newBuildIds = buildIds.Distinct().Except(BindingToBuilds[buildBinding]); if (newBuildIds.IsEmpty()) { return; } Apply(new BuildsToBuildsBindingAdded(buildBinding, newBuildIds.ToArray(), CreateMetadata())); }