public void CanBeUsedByLinqSetOperatorsSuchAsIntersect()
        {
            IList<ConcreteEntityWithDomainSignatureProperties> objects1 =
                new List<ConcreteEntityWithDomainSignatureProperties>();
            var object1 = new ConcreteEntityWithDomainSignatureProperties { Name = "Billy McCafferty", };
            EntityIdSetter.SetIdOf(object1, 2);
            objects1.Add(object1);

            IList<ConcreteEntityWithDomainSignatureProperties> objects2 =
                new List<ConcreteEntityWithDomainSignatureProperties>();
            var object2 = new ConcreteEntityWithDomainSignatureProperties { Name = "Jimi Hendrix", };
            EntityIdSetter.SetIdOf(object2, 1);
            objects2.Add(object2);
            var object3 = new ConcreteEntityWithDomainSignatureProperties
                {
                    Name =
                        "Doesn't Matter since the Id will match and the presedence of the domain signature will go overridden", 
                };
            EntityIdSetter.SetIdOf(object3, 2);
            objects2.Add(object3);

            Assert.That(
                objects1.Intersect(
                    objects2, new BaseObjectEqualityComparer<ConcreteEntityWithDomainSignatureProperties>()).Count(), 
                Is.EqualTo(1));
            Assert.AreEqual(
                objects1.Intersect(
                    objects2, new BaseObjectEqualityComparer<ConcreteEntityWithDomainSignatureProperties>()).First(), 
                object1);
            Assert.AreEqual(
                objects1.Intersect(
                    objects2, new BaseObjectEqualityComparer<ConcreteEntityWithDomainSignatureProperties>()).First(), 
                object3);
        }
        public void CanGetSingleDefinitionFromList()
        {
            var roles = new string[] {"everyone","users","publishers"};

            var definitions = new List<AccessDefinition>()
            {
                new AccessDefinition(){RoleId ="administrator",CanRead =false,CanEdit = true,CanDelete = false,CanPublish = true},
                 new AccessDefinition(){RoleId ="users",CanRead =false,CanEdit = false,CanDelete = true,CanPublish = false},
                  new AccessDefinition(){RoleId ="everyone",CanRead =true,CanEdit = false,CanDelete = false,CanPublish = false}
            };

            var emptyDef = roles.Select(r => new AccessDefinition() {RoleId = r});

            var ins = definitions.Intersect(emptyDef,new AccessDefinitionComparer());

            var normalizedView = new AccessDefinition();
            foreach (var ad in ins)
            {
                if (ad.CanRead)
                    normalizedView.CanRead = true;
                if (ad.CanPublish)
                    normalizedView.CanPublish = true;
                if (ad.CanEdit)
                    normalizedView.CanEdit = true;
                if (ad.CanDelete)
                    normalizedView.CanDelete = true;
            }

            Assert.IsTrue(normalizedView.CanRead && normalizedView.CanDelete && !normalizedView.CanEdit && !normalizedView.CanPublish);
        }
 public void Test_equality_IEnumerable()
 {
     var list1 = new List<Content> { new Content { Id = "1"} };
     var list2 = new List<Content> { new Content { Id = "1" } };
     //the intersections of these lists should have 1 element in it
     Assert.Greater(list1.Intersect(list2).Count(), 0);
 }
示例#4
0
        public static void Serialization()
        {
            Assembly twitterizerAssembly = Assembly.GetAssembly(typeof(TwitterUser));
            var objectTypesToCheck = from t in twitterizerAssembly.GetExportedTypes()
                               where !t.IsAbstract &&
                               !t.IsInterface &&
                               (
                                t.GetInterfaces().Contains(twitterizerAssembly.GetType("Twitterizer.Core.ITwitterObject")) ||
                                t.IsSubclassOf(twitterizerAssembly.GetType("Twitterizer.Entities.TwitterEntity"))
                               )
                               select t;

            var interfacesToImplement = new List<Type>();
            interfacesToImplement.Add(twitterizerAssembly.GetType("Twitterizer.Core.ICommand`1"));
            interfacesToImplement.Add(twitterizerAssembly.GetType("Twitterizer.Core.ITwitterCommand`1"));

            var baseClassesToInherit = new List<Type>();
            baseClassesToInherit.Add(twitterizerAssembly.GetType("Twitterizer.Commands.PagedTimelineCommand`1"));

            var commandTypesToCheck = from t in twitterizerAssembly.GetTypes()
                                      where
                                     (
                                      interfacesToImplement.Intersect(t.GetInterfaces()).Count() > 0 ||
                                      baseClassesToInherit.Any(t.IsSubclassOf)
                                     )
                                     select t;

            var objects = objectTypesToCheck.Union(commandTypesToCheck).ToList();

            foreach (Type type in objects)
            {
                Console.WriteLine(string.Format("Inspecting: {0}", type.FullName));

                // Check that the object itself is marked as serializable
                Assert.That(type.IsSerializable, string.Format("{0} is not marked as Serializable", type.Name));

                // Get the parameter-less constructor, if there is one
                ConstructorInfo constructor = type.GetConstructor(Type.EmptyTypes);

                if (constructor == null)
                    Assert.Fail(string.Format("{0} does not have a public ctor", type.FullName));

                // Instantiate the type by invoking the constructor
                object objectToSerialize = constructor.Invoke(null);

                try
                {
                    using (MemoryStream ms = new MemoryStream())
                    {
                        // Serialize the object
                        new BinaryFormatter().Serialize(ms, objectToSerialize);
                    }
                }
                catch (Exception) // Catch any exceptions and assert a failure
                {
                    Assert.Fail(string.Format("{0} could not be serialized", type.FullName));
                }
            }
        }
        public void Run_on_separate_thread()
        {
            var frc = new FlowRuntimeConfiguration()
                            .AddStream(new Stream(".in", "serNop0"))
                            .AddStream(new Stream("serNop0", "serNop1"))
                            .AddStream(new Stream("serNop1", ".out"));
            var asyncThreadIds0 = new List<long>();

            frc.AddFunc<string, string>("serNop0", _ =>
                                                    {
                                                        lock (asyncThreadIds0)
                                                        {
                                                            Console.WriteLine("serNop0: {0} on {1}", _, Thread.CurrentThread.GetHashCode());
                                                            asyncThreadIds0.Add(Thread.CurrentThread.GetHashCode());
                                                        }
                                                        return _;
                                                    }).MakeSerial();

            var asyncThreadIds1 = new List<long>();
            frc.AddFunc<string, string>("serNop1", _ =>
                                                    {
                                                        lock (asyncThreadIds1)
                                                        {
                                                            Console.WriteLine("serNop1: {0} on {1}", _, Thread.CurrentThread.GetHashCode());
                                                            asyncThreadIds1.Add(Thread.CurrentThread.GetHashCode());
                                                        }
                                                        return _;
                                                    }).MakeSerial();

            using (var sut = new FlowRuntime(frc))
            {
                const int N = 5;
                var results = new List<IMessage>();
                long runtimeThreadId = 0;
                var are = new AutoResetEvent(false);
                sut.Result += _ =>
                                  {
                                      lock (results)
                                      {
                                          Console.WriteLine("res {0} on {1}", _.Data, Thread.CurrentThread.GetHashCode());
                                          runtimeThreadId = Thread.CurrentThread.GetHashCode();
                                          results.Add(_);
                                          if (results.Count == N) are.Set();
                                      }
                                  };

                for (var i = 0; i < N; i++ )
                    sut.Process(new Message(".in", "x" + i));

                Assert.IsTrue(are.WaitOne(10000));
                Assert.AreEqual(N, results.Count);
                Assert.That(results.Select(r => r.Data.ToString()).ToArray(), Is.EquivalentTo(new[]{"x0", "x1", "x2", "x3", "x4"}));
                Assert.IsFalse(asyncThreadIds0.Contains(runtimeThreadId));
                Assert.IsFalse(asyncThreadIds1.Contains(runtimeThreadId));
                Assert.AreEqual(0, asyncThreadIds0.Intersect(asyncThreadIds1).Count());
            }
        }
 public void CalculatePrimes()
 {
     var expectedPrimes = new List<long> {
     2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97
       };
       var primes = Primes.CalculatePrimesBelow(100);
       Assert.AreEqual(expectedPrimes.Count, primes.Count());
       Assert.AreEqual(expectedPrimes.Count, expectedPrimes.Intersect(primes).Count());
 }
 public void Test_tag_equality_IEnumerable()
 {
     var list1 = new List<Tag> { new Tag { Id = "/Rupert" } };
     var list2 = new List<Tag> { new Tag { Id = "/Rupert" } };
     //the intersections of these lists should have 1 element in it
     Assert.Greater(list1.Intersect(list2).Count(), 0);
     //list2 should contain the first element of list1
     Assert.Contains(list1[0], list2);
 }
示例#8
0
            public void Returns_Three_Nearest_From_1_1()
            {
                var legalMoves = _piece.GetLegalMovesFromCoordinate(_startLocation, _board.BoardSize);
                var corners = new List<BoardCoordinate>();
                corners.Add(new BoardCoordinate(1, 2));
                corners.Add(new BoardCoordinate(2, 2));
                corners.Add(new BoardCoordinate(2, 1));

                Assert.IsTrue(corners.Intersect(legalMoves).Count() == 3);
            }
示例#9
0
            public void Returns_Three_Corners_From_8_8()
            {
                var legalMoves = _piece.GetLegalMovesFromCoordinate(new BoardCoordinate(8, 8), _board.BoardSize);
                var corners = new List<BoardCoordinate>();
                corners.Add(new BoardCoordinate(1, 8));
                corners.Add(new BoardCoordinate(1, 1));
                corners.Add(new BoardCoordinate(8, 1));

                Assert.IsTrue(corners.Intersect(legalMoves).Count() == 3);
            }
示例#10
0
        public void Intersection()
        {
            var a = new List<int> { 1, 2, 3 };
            var b = new List<int> { 1, 2, 3, 4, 5, 6 };

            var results = a.Intersect(b).ToList();

            Assert.AreEqual(3, results.Count());
            Assert.AreEqual(1, results[0]);
            Assert.AreEqual(2, results[1]);
            Assert.AreEqual(3, results[2]);
        }
        public void RandomShufflerShouldNotChangeReffernceTypeListContentOtherThanOrder()
        {
            const int listSize = 4;
            var list = new List<string>()
            {
                "This",
                "is",
                "a",
                "Test"
            };
            var listClone = new List<string>(list);
            ListRandomShuffler.InPlaceShuffle(list);

            var dupCount = list.Intersect(listClone).ToList().Count;
            Assert.AreEqual(dupCount, listSize);

            bool hasDifference = list.Except(listClone).ToList().Any();
            Assert.IsFalse(hasDifference);
        }
示例#12
0
        public void when_items_are_added_those_items_are_pumped_onto_AddedItemsCollectionChanged()
        {
            var testSchedulerProvider = new TestDispatcherSchedulerProvider();

            var results = new List<Guid>();

            var bindableCollection = new BindableCollection<Guid>(testSchedulerProvider);
            bindableCollection.AddedItemsCollectionChanged
                              .Subscribe(x => results.AddRange(x));

            var items = Enumerable.Range(0, 10)
                                  .Select(_ => Guid.NewGuid())
                                  .ToList();

            bindableCollection.AddRange(items);

            var intersectionCount = results.Intersect(items).Count();

            Assert.That(intersectionCount, Is.EqualTo(items.Count));
        }
示例#13
0
        public void IntersectQueryReuse()
        {
            List<int> first = new List<int> { 1, 2 };
            List<int> second = new List<int> { 2, 4 };
            IEnumerable<int> enumerable = first.Intersect(second);

            enumerable.AssertEqual(2);

            first.Add(3);
            second.Add(3);
            enumerable.AssertEqual(2, 3);
        }
示例#14
0
        public void IntersectWithComparerQueryReuse()
        {
            List<int> first = new List<int> { 1, 2 };
            List<int> second = new List<int> { 2, 4 };
            IEnumerable<int> enumerable = first.Intersect(second, EqualityComparer<int>.Default);

            enumerable.AssertEqual(2);

            first.Add(3);
            second.Add(3);
            enumerable.AssertEqual(2, 3);
        }
示例#15
0
		public void Intersect_LinqExt ()
		{
			// Intersect; distinct union between two sets of data
			var groupOne = new List<int> (){ 1,2,3,4,5};
			var groupTwo = new List<int> (){4,5,6,7};
			var groupInter = groupOne.Intersect (groupTwo).OrderBy (x => x);

			Assert.AreEqual (2, groupInter.Count ());
			Assert.AreEqual (4, groupInter.First ());
			Assert.AreEqual (5, groupInter.Last ());
		}