public void GetSimpleIntersection__2Users_2CaseSensetiveKey_2SameUser__1User()
        {
            // arrange
            User user1 = new UserBuilder().WithEmail("*****@*****.**").Build();

            _first.Add(user1.Email, user1); // key1 user1
            _second.Add(user1.Email.ToUpper(), user1);// key1.ToUpper user1

            // act
            var result = _repository.GetSimpleIntersection(_first, _second);

            // assert
            Assert.AreEqual(result.Count, 1);
            Assert.That(result[user1.Email].Email, Is.EqualTo(user1.Email));
        }
        public void GetSimpleIntersection__2Users_0SameKey__0User()
        {
            // arrange
            User user1 = new UserBuilder().Build();
            User user2 = new UserBuilder().WithEmail("*****@*****.**").Build();

            _first.Add(user1.Email, user1);
            _second.Add(user2.Email, user2);

            // act
            var result = _repository.GetSimpleIntersection(_first, _second);

            // assert
            Assert.AreEqual(result.Count, 0);
        }
        public void GetSimpleIntersection__5Users_2SameKey_GetUserFromMinLengthDictionary__1User()
        {
            // arrange
            User user1 = new UserBuilder().WithEmail("*****@*****.**").Build();
            User user2 = new UserBuilder().WithEmail("*****@*****.**").Build();
            User user3 = new UserBuilder().WithEmail("*****@*****.**").Build();
            User user4 = new UserBuilder().WithEmail("*****@*****.**").Build();

            _first.Add(user1.Email, user4); // key1 user4
            _first.Add(user2.Email, user4);

            _second.Add(user1.Email, user1); // key1 user1
            _second.Add(user3.Email, user1);
            _second.Add(user4.Email, user1);

            // act
            var result = _repository.GetSimpleIntersection(_first, _second);

            // assert
            Assert.AreEqual(result.Count, 1);
            Assert.That(result[user1.Email].Email, Is.EqualTo(user4.Email));
            Assert.That(result[user1.Email].Email, Is.Not.EqualTo(user1.Email));
        }
        public void GetStrongIntersection__2Users_2SameKey_2SameUser__1User()
        {
            // arrange
            User user1 = new UserBuilder().Build();
            User user2 = new UserBuilder().Build();

            _first.Add(user1.Email, user1);
            _second.Add(user2.Email, user2);

            // act
            var result = _repository.GetStrongIntersection(_first, _second);

            // assert
            Assert.AreEqual(result.Count, 1);
            Assert.That(result[user1.Email].Email, Is.EqualTo(user1.Email));
        }
        public void GetStrongIntersection__2Users_2SameKey_0SameUserName__0User()
        {
            // arrange
            User user1 = new UserBuilder().Build();
            User user2 = new UserBuilder().WithFirstName("John").Build();

            _first.Add(user1.Email, user1);
            _second.Add(user2.Email, user2);

            // act
            var result = _repository.GetStrongIntersection(_first, _second);

            // assert
            Assert.AreEqual(result.Count, 0);
        }