Exemplo n.º 1
0
 public void TestExceptAdd_NullComparer_Throws()
 {
     IReadOnlySublist<List<int>, int> list1 = new List<int>().ToSublist();
     IExpandableSublist<List<int>, int> list2 = new List<int>().ToSublist();
     IComparer<int> comparer = null;
     list1.Except(list2, comparer);
 }
Exemplo n.º 2
0
        public void GetFactorsTest()
        {
            double number = 18;
            List<double> expectedFactors = new List<double>() { 1, 2, 3, 6, 9, 18 };

            Assert.IsTrue(expectedFactors.Except(Calculate.GetFactors(number)).ToArray().Length == 0);
        }
Exemplo n.º 3
0
 public void TestExceptAdd_NullComparison_Throws()
 {
     IReadOnlySublist<List<int>, int> list1 = new List<int>().ToSublist();
     IExpandableSublist<List<int>, int> list2 = new List<int>().ToSublist();
     Func<int, int, int> comparison = null;
     list1.Except(list2, comparison);
 }
Exemplo n.º 4
0
        public void ShouldReturnPrimesUnder30()
        {
            // Arrange
            var primeNumbers = new PrimeNumbers();
            var primesReturned = false;
            var primesGenerated = new List<int>();

            // Primes taken from https://oeis.org/A000040
            var primesUnder30 = new List<int>
                {
                    2,
                    3,
                    5,
                    7,
                    11,
                    13,
                    17,
                    19,
                    23,
                    29
                };

            // Act
            foreach (var prime in primeNumbers.Generate(30))
            {
                Assert.IsTrue(primesUnder30.Contains(prime), $"Unexpected prime: {prime}");
                primesGenerated.Add(prime);
                primesReturned = true;
            }

            // Assert
            Assert.IsTrue(primesReturned, "Expected the on prime action to be called.");
            Assert.IsFalse(primesUnder30.Except(primesGenerated).Any(), "Expected all primes under 30 to be generated.");
        }
        public void LinqExcept_ShouldReturnEMotyCollection()
        {
            var playlistItem1 = new List<PlaylistItem> { new PlaylistItem { Snippet = new PlaylistItemSnippet { Title = "Title 1", ResourceId = new ResourceId { VideoId = "dsfhahdfh" } } } };
            var playlistItem2 = new List<PlaylistItem> { new PlaylistItem { Snippet = new PlaylistItemSnippet { Title = "Title 1", ResourceId = new ResourceId { VideoId = "dsfhahdfh" } } } };

            var comparer = new PlaylistItemEqualityComparer();
            var result = playlistItem1.Except(playlistItem2, comparer);

            Assert.IsFalse(result.Any());
        }
        public void LinqExcept_ShouldReturnEMotyCollection()
        {
            var channel1 = new List<Channel> { new Channel { Id = "dsfhahdfh", Snippet = new ChannelSnippet { Title = "Title 1" } } };
            var channel2 = new List<Channel> { new Channel { Id = "dsfhahdfh", Snippet = new ChannelSnippet { Title = "Title 1" } } };

            var comparer = new ChannelEqualityComparer();
            var result = channel1.Except(channel2, comparer);

            Assert.IsFalse(result.Any());
        }
        public void QueryDocIdsWithParameterDocIds()
        {
            var expectedDocIds = new List<string>
            {
                $"M:{ValidDocId}0",
                $"T:{ValidDocId}0",
            };

            var result = _OfflineApiPortService.QueryDocIdsAsync(expectedDocIds).Result.Response;
            Assert.AreEqual(expectedDocIds.Count(), result.Count());
            Assert.AreEqual(0, expectedDocIds.Except(result.Select(r => r.Definition.DocId)).Count());
        }
Exemplo n.º 8
0
 public void GetFilePaths_return_correct_paths()
 {
     var _checkList = new List<string>
     {
         @"C:\Users\DarkS\Source\Repos\ElQuecus\ElQuecus\ElQuecus.Test\TestMusic\Hollywood Undead- Does Everybody In the World Have To Die.mp3",
         @"C:\Users\DarkS\Source\Repos\ElQuecus\ElQuecus\ElQuecus.Test\TestMusic\Hollywood Undead - Disease.mp3",
         @"C:\Users\DarkS\Source\Repos\ElQuecus\ElQuecus\ElQuecus.Test\TestMusic\Hollywood Undead- Party By Myself.mp3"
     };
     const string checkedPath = @"C:\Users\DarkS\Source\Repos\ElQuecus\ElQuecus\ElQuecus.Test\TestMusic";
     var test = FileSearch.GetFilePaths(checkedPath).Result;
     Assert.AreEqual(_checkList.Except(test).Count(), 0);
 }
        public void ExceptTest()
        {
            var src = new List<String> { "foo", "bar", "baz" };
            var act = src.Except("bar");

            Assert.IsTrue(act.Count() == 2);
            Assert.IsFalse(act.Contains("bar"));

            src = new List<String> { "foo", "bar", "baz" };
            act = src.Except("xxx");
            Assert.IsTrue(act.Count() == 3);
            Assert.IsFalse(act.Contains("xxx"));
        }
    public void TestBatchableViewModel_ChangeModelProperty_AllPropertyChangedFired()
    {
      var listOfPropertyNames = new List<string>();
      var vm = new TestBatchableViewModel();
      vm.PropertyChanged += (sender, args) => { listOfPropertyNames.Add(args?.PropertyName); };

      vm.SetBackingModel(new TestModel(name: "Test", id: 1));

      var expectedListOfNames = new List<string>() { "Model", nameof(vm.Name), nameof(vm.ID) };

      Assert.IsTrue(expectedListOfNames.Except(listOfPropertyNames).Count() == 0, $"All property names expected are NOT in the fired list: expected:[{HelperMethods.GetStringFromCollection(expectedListOfNames)}], fired:[{HelperMethods.GetStringFromCollection(listOfPropertyNames)}].");
      Assert.IsTrue(listOfPropertyNames.Except(expectedListOfNames).Count() == 0, $"All property names fired are NOT in the expected list: expected:[{HelperMethods.GetStringFromCollection(expectedListOfNames)}], fired:[{HelperMethods.GetStringFromCollection(listOfPropertyNames)}].");

      CollectionAssert.AreEqual(expectedListOfNames, listOfPropertyNames, $"The expected properties of the TestViewModel: expected:[{HelperMethods.GetStringFromCollection(expectedListOfNames)}], fired:[{HelperMethods.GetStringFromCollection(listOfPropertyNames)}]. They fired in an incorrect order...");
    }
Exemplo n.º 11
0
        public void TestDecode()
        {
            var hFuncs = new List<IHashFunc>
            {
                new MurmurHash3_x86_32() {Seed = 0},
                new MurmurHash3_x86_32() {Seed = 1},
                new MurmurHash3_x86_32() {Seed = 2},
                new MurmurHash3_x86_32() {Seed = 3},
                new MurmurHash3_x86_32() {Seed = 4}
            };

            var l1 = new List<long>();
            var l2 = new List<long>();
            for (var i = 0; i < 1000; ++i)
            {
                l1.Add((long)i);
            }
            for (var i = 0; i < 1010; ++i)
            {
                l2.Add((long)i);
            }

            var ibf1 = new IBF(30, hFuncs);
            var ibf2 = new IBF(30, hFuncs);

            foreach (var i in l1)
            {
                ibf1.Add(i);
            }
            foreach (var i in l2)
            {
                ibf2.Add(i);
            }

            var sub = ibf1 - ibf2;

            var l1ml2 = new List<long>();
            var l2ml1 = new List<long>();
            var ret = sub.Decode(l1ml2, l2ml1);

            var expected = l2.Except(l1).ToList();
            expected.Sort();
            var actual = l2ml1;
            actual.Sort();

            CollectionAssert.AreEqual(expected, actual);
            Assert.IsTrue(ret);
        }
Exemplo n.º 12
0
        public void TrieTests_EnumerateInOrder()
        {
            Trie<char> trie = new Trie<char>();

            List<string> items = new List<string>() { "abcd", "abc" };
            foreach (string item in items)
            {
                trie.Insert(item);
            }

            items.Sort();

            var actualOrder = trie.EnumerateInOrder().Select(sequence => new string(sequence.ToArray())).ToList();

            Assert.IsTrue(items.Except(actualOrder).Count() == 0);
            Assert.IsTrue(actualOrder.Except(items).Count() == 0);
        }
        public void AddShouldStoreKeysPersistently()
        {
            var keys = new List<decimal>();
            var hashtable = new HashTable<decimal, string>();

            for (int i = 0; i < 1000; i++)
            {
                var nextKey = rng.NextDecimal();
                hashtable.Add(nextKey, "dinozavyr");
                keys.Add(nextKey);
            }

            keys.ForEach(x => Assert.IsTrue(hashtable.Keys.Contains(x)));

            Assert.AreEqual(0, keys.Except(hashtable.Keys).Count());
            Assert.AreEqual(0, hashtable.Keys.Except(keys).Count());
        }
            private void ChangeExports(List<Export> newExports)
            {
                using (var atomicComposition = new AtomicComposition())
                {
                    atomicComposition.AddCompleteAction(() => this._exports = newExports);
                    atomicComposition.SetValue(this, newExports);

                    var addedExports = newExports.Except(this._exports).Select(export => export.Definition);
                    var removedExports = this._exports.Except(newExports).Select(export => export.Definition);

                    this.OnExportsChanging(new ExportsChangeEventArgs(addedExports, removedExports, atomicComposition));

                    atomicComposition.AddCompleteAction(() => this.OnExportsChanged(
                        new ExportsChangeEventArgs(addedExports, removedExports, null)));

                    atomicComposition.Complete();
                }
            }
        public void AddRemoveItems()
        {
            // Arrange
            IList<int> newList = new List<int>() { 1, 2, 3 };
            IList<int> currentList = new List<int>() {1, 3, 4, 5};
            IList<int> finalList = currentList;

            // Act
            var addedList = newList.Except(currentList).ToList();
            var deletedList = currentList.Except(newList).ToList();

            addedList.ForEach(x => finalList.Add(x));
            deletedList.ForEach(x => finalList.Remove(x));

            // Assert
            Assert.AreEqual(1, addedList.Count());
            Assert.AreEqual(2, deletedList.Count());
            Assert.AreEqual(3, finalList.Count());
        }
Exemplo n.º 16
0
        public void ListTest()
        {
            List<int> l1 = new List<int>();
            List<int> l2 = new List<int>();
            List<int> expected = new List<int>();

            l1.AddRange(new int[] { 1, 2, 3, 4, 5 });
            l2.AddRange(new int[] { 4, 5, 6, 7 });
            expected.AddRange(new int[] { 1, 2, 3 });

            List<int> result = l1.Except(l2).ToList();
            Assert.IsTrue(
                result.All((x) => (l1.Contains(x)))
                );

            foreach (var x in result)
            {
                Console.WriteLine(x);
            }
        }
Exemplo n.º 17
0
        public void RandomAllNumbersTest()
        {
            HpBuildStrategy builder = new HpBuildStrategy();
            var computers = builder.BuildComputers();
            Computer pc = computers[0];
            List<int> expected = new List<int>(){1,2,3,4,5,6,7,8,9,10};
            List<int> generated = new List<int>();
            bool allNumbersPresent = false;

            for (int i = 0; i < 100; i++)
            {
                CommandProcessor.ProcessCommand("Play  15", pc, null, null);
                var value = pc.Ram.LoadValue();
                if (!generated.Contains(value))
                {
                    generated.Add(value);
                }
            }
            List<int> result = expected.Except(generated).ToList();
            Assert.AreEqual(0, result.Count);
        }
Exemplo n.º 18
0
        public void Test1()
        {
            List<int> list1 = new List<int> { 1, 2 };
            List<int> list2 = new List<int> { 1, 3, 4 };

            var result = list1.Except(list2).ToArray(); //except 方法返回值一定是原先集合的子集合  //返回2 //這樣可以獲取比原先集合少掉的部分
            Assert.AreEqual(result[0], 2);

            var result2 = list2.Except(list1).ToArray();//返回3,4 //這樣可以獲取比原先集合多的部分
            Assert.AreEqual(result2[0], 3);
            Assert.AreEqual(result2[1], 4);

            var listAdd = new List<int> { 3, 4 };
            var listRemove = new List<int> { 2, -1 };

            listAdd.AddRange(list1);

            foreach (var item in listRemove)
            {
                listAdd.Remove(item);
            }

            Assert.AreEqual(listAdd.Count, 3);
        }
Exemplo n.º 19
0
        public void WhenDisposedAllStreamsDestroyed_BeforeReading()
        {

            var createdStreamRegister = new List<Stream>();
            var disposedStreamRegister = new List<Stream>();

            using (var rollingMemory = (new RollingMemoryBuilder())
                .SetupStreamLifecycleImplementation(
                    CreateMemoryWriteStreamFactory(createdStreamRegister),
                    CreateMemoryWriteStreamToReadStreamConverter(null),
                    CreateMemoryStreamDataSourceDisposerFactory(disposedStreamRegister),
                    CreateMemoryStreamDataSourceDisposerFactory(disposedStreamRegister))
                .SetStreamLifecycleThresholds(
                    null,
                    null,
                    0)
                .SetCurrentDateTimeSource(
                   CreateFixedCurrentDateTimeSource()).Build())
            {

                var testData = new byte[] { 1, 2, 3, 4 };

                rollingMemory.WriteStream.Write(testData, 0, testData.Length);

            }

            Assert.IsTrue(createdStreamRegister.Except(disposedStreamRegister).Count() == 0);

        }
Exemplo n.º 20
0
 public void TestExceptCopy_WithComparison_NullList2_Throws()
 {
     IReadOnlySublist<List<int>, int> list1 = new List<int>().ToSublist();
     IExpandableSublist<List<int>, int> list2 = null;
     Func<int, int, int> comparison = Comparer<int>.Default.Compare;
     list1.Except(list2, comparison);
 }
Exemplo n.º 21
0
        public void CompositeDisposable_RemoveOptimizationBehavior()
        {
            var g = new CompositeDisposable();
            var m = new Dictionary<int, IDisposable>();
            var r = new List<int>();

            var N = 100;

            for (int i = 0; i < N; i++)
            {
                var j = i;

                var d = Disposable.Create(() => r.Add(j));
                m[j] = d;
                g.Add(d);
            }

            var d1 = Enumerable.Range(0, N).Where(i => i % 2 == 0).ToArray();
            foreach (var i in d1)
                g.Remove(m[i]);
            Assert.IsTrue(r.SequenceEqual(d1));

            var d2 = Enumerable.Range(0, N).Where(i => i % 3 == 0).ToArray();
            foreach (var i in d2)
                g.Remove(m[i]);
            Assert.IsTrue(r.SequenceEqual(d1.Concat(d2.Where(x => !d1.Any(y => x == y)))));

            var d3 = Enumerable.Range(0, N).Where(i => i % 5 == 0).ToArray();
            foreach (var i in d3)
                g.Remove(m[i]);
            Assert.IsTrue(r.SequenceEqual(d1.Concat(d2.Where(x => !d1.Any(y => x == y))).Concat(d3.Where(x => !d1.Any(y => x == y) && !d2.Any(y => x == y)))));

            g.Dispose();

            var z = r.Except(d1.Union(d2).Union(d3)).ToArray();
            Assert.IsTrue(z.SequenceEqual(Enumerable.Range(0, N).Where(i => !(i % 2 == 0 || i % 3 == 0 || i % 5 == 0))));
        }
Exemplo n.º 22
0
 public void TestExceptCopy_NullList2_Throws()
 {
     IReadOnlySublist<List<int>, int> list1 = new List<int>().ToSublist();
     IExpandableSublist<List<int>, int> list2 = null;
     list1.Except(list2);
 }
Exemplo n.º 23
0
 public void TestExceptCopy_WithComparer_NullDestination_Throws()
 {
     IReadOnlySublist<List<int>, int> list1 = new List<int>().ToSublist();
     IExpandableSublist<List<int>, int> list2 = new List<int>().ToSublist();
     IExpandableSublist<List<int>, int> destination = null;
     IComparer<int> comparer = Comparer<int>.Default;
     list1.Except(list2, comparer).CopyTo(destination);
 }
Exemplo n.º 24
0
        public void BinarySearchTreeTests_Random_Remove()
        {
            Random r = new Random();

            int n =(r.Next(200)+ 1) * (r.Next(200)+ 1);

            List<int> expectedKeys = new List<int>();
            IBinarySearchTree<int, string> tree = new BinarySearchTree<int, string>();
            for (int i = 0; i < n; i++)
            {
                int newKey = r.Next(int.MaxValue);
                expectedKeys.Add(newKey);
                tree.Insert(newKey, string.Empty);
            }

            int k = r.Next((int)Math.Sqrt(n)) + 1;
            var toRemove = expectedKeys.OrderBy(_ => r.NextDouble()).Take(k);
            expectedKeys.Sort();
            foreach(var key in toRemove)
            {
                bool actualResult = tree.Remove(key);
                expectedKeys.Remove(key);
                var actualKeys = tree.TraverseInOrder().Select(_ => _.Key);

                Assert.IsTrue(actualResult);
                Assert.IsTrue(tree.Count == expectedKeys.Count);
                Assert.IsTrue(expectedKeys.Except(actualKeys).Count() == 0);
                Assert.IsTrue(actualKeys.Except(expectedKeys).Count() == 0);
            }
        }
Exemplo n.º 25
0
 public void TestExceptCopy_NullDestination_Throws()
 {
     IReadOnlySublist<List<int>, int> list1 = new List<int>().ToSublist();
     IExpandableSublist<List<int>, int> list2 = new List<int>().ToSublist();
     IExpandableSublist<List<int>, int> destination = null;
     list1.Except(list2).CopyTo(destination);
 }
Exemplo n.º 26
0
        public void CheckDBResults(string instanceName, string query, Object expectedValueObj, bool stopOnFailure, Object customErrorMessage = null)
        {
            string expectedValue = CheckNullValue(expectedValueObj, "Check DB Results", stopOnFailure);
            List<Object> objArrList;
            List<string> inputTable = new List<string>();
            List<string> strArrList = new List<string>();

            try
            {
                objArrList = GetDBTable(instanceName, query);

                var regexSplitter = new Regex(@"(?<!\\),");
                inputTable.AddRange(regexSplitter.Split(@expectedValue));
                List<String> tempInputTable = new List<String>();
                foreach (string inputVal in inputTable)
                {
                    string formattedValue = inputVal.Replace("\\", "");

                    tempInputTable.Add(formattedValue);
                }

                inputTable = tempInputTable;

                foreach (Object obj in objArrList)
                {
                    strArrList.Add(obj.ToString());
                }

                IEnumerable<string> differenceQuery = inputTable.Except(strArrList, StringComparer.OrdinalIgnoreCase);
                List<string> differenceList = differenceQuery.ToList<string>();

                if (differenceList.Count > 0)
                {
                    reportResults(
                        stopOnFailure,
                        "Check DB Results",
                        "Check DB Results command failed. Table data is not as expected : For Query : " + query + " :EXPECTED Value : " + expectedValue
                        + " :Actual Value : " + String.Join(",", strArrList),
                        LogLevel.Error,
                        "",
                        customErrorMessage);
                }
                else
                {
                    reportResults(
                       "Check DB Results",
                       "Check DB Results command passed.  For Query : " + query + " :EXPECTED Value " + expectedValue,
                       LogLevel.Success
                       );
                }
            }
            catch (AssertFailedException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                if (e.Message.StartsWith("Connection instance unavaliable"))
                {
                    reportResults(
                          stopOnFailure,
                          "Check DB Results",
                          "Check DB Results command failed. Connection : " + instanceName + " is not created. Actual : " + e.Message,
                          LogLevel.Error,
                          e.StackTrace,
                          customErrorMessage);
                }
                else
                {
                    reportResults(
                         stopOnFailure,
                         "Check DB Results",
                         "Check DB Results command failed. Actual : " + e.Message,
                         LogLevel.Error,
                         e.StackTrace,
                         customErrorMessage);
                }
            }
        }
        public void QueryDocIdsWithSomeValidAndNonValidIds()
        {
            var docIdsToPass = new List<string>
            {
                $"T:{ValidDocId}0",
                $"M:{ValidDocId}1",
                $"P:{ValidDocId}0",
                $"{InvalidDocId}{MaxDocIdSetCount + 1}",
                $"{InvalidDocId}{MaxDocIdSetCount + 2}",
                $"{InvalidDocId}{MaxDocIdSetCount + 3}"
            };

            var expectedDocIds = new List<string>
            {
                $"T:{ValidDocId}0",
                $"M:{ValidDocId}1",
                $"P:{ValidDocId}0"
            };

            var result = _OfflineApiPortService.QueryDocIdsAsync(docIdsToPass).Result.Response;
            Assert.AreEqual(expectedDocIds.Count(), result.Count());
            Assert.AreEqual(0, expectedDocIds.Except(result.Select(d => d.Definition.DocId)).Count());
        }
Exemplo n.º 28
0
        public void TestAchievements()
        {
            ObjectFactory.Configure(a => a.For<IAchievementRepository>().Singleton().Use<AppDataXmlCompletedAchievementsRepository>());
            var achievementRepository = ObjectFactory.GetInstance<IAchievementRepository>();
            achievementRepository.LoadFromAssembly(typeof(NRefactoryAchievement).Assembly);

            var achievementTests = GetType().Assembly.GetTypes().Where(a => a.GetCustomAttributes(typeof (ExpectUnlockAttribute), true).Length > 0);
            foreach(var test in achievementTests)
            {
                var sourceFile = Path.GetFullPath("TestCases/" + test.Name + ".cs");
                var buildInformation = new BuildInformation()
                                           {
                                               ActiveFile = sourceFile,
                                               ActiveProject = null,
                                               ActiveProjectOutputDirectory = Path.GetDirectoryName(sourceFile),
                                               ChangedFiles = new []{sourceFile}
                                           };

                var expectedAchievements = test.GetCustomAttributes(typeof(ExpectUnlockAttribute), true).Select(a => ((ExpectUnlockAttribute)a).ExpectedAchievementType).ToList();

                using (var detectionSession = new DetectionSession(buildInformation))
                {
                    var achievements = achievementRepository.GetAchievements().ToList();

                    var tasks = new Task[achievements.Count()];
                    var i = 0;

                    var unlockedAchievements = new List<Type>();
                    foreach (var uncompletedAchievement in achievements)
                    {
                        var a = uncompletedAchievement;

                        tasks[i++] = Task.Factory.StartNew(() =>
                                                               {
                                                                    var achievementType = a.AchievementType;
                                                                    var achievement = (AchievementBase)Activator.CreateInstance(achievementType);

                                                                    var achievementUnlocked = achievement.DetectAchievement(detectionSession);

                                                                    if (achievementUnlocked)
                                                                    {
                                                                        a.CodeLocation = achievement.AchievementCodeLocation;
                                                                        a.IsCompleted = true;
                                                                        unlockedAchievements.Add(achievementType);
                                                                    }
                                                                });
                    }

                    Task.WaitAll(tasks);

                    //Test that expected achievements unlocked
                    foreach(var expectedAchievement in expectedAchievements)
                    {
                        Assert.IsTrue(unlockedAchievements.Contains(expectedAchievement), Path.GetFileName(sourceFile) + " did not unlock expected achievement: " + expectedAchievement.FullName);
                    }

                    //Test that only expected achievements unlocked
                    var unexpectedAchievements = unlockedAchievements.Except(expectedAchievements).Except(_globallyIgnoredAchievements).ToList();
                    Assert.IsTrue(unexpectedAchievements.Count() == 0, Path.GetFileName(sourceFile) + " unlocks unexpected achievements: " + string.Join(", ", unexpectedAchievements.Select(a => a.Name)));
                }
            }
        }
Exemplo n.º 29
0
        public void GetDepartmentsDictionaryTest()
        {
            DepartmentRepository.SaveDepartment(string.Empty, "location1", "name1", string.Empty, string.Empty, 11.11m, 11.11m);
            DepartmentRepository.SaveDepartment(string.Empty, "location2", "name2", string.Empty, string.Empty, 11.11m, 11.11m);
            var expected = new List<string> { "location1, name1", "location2, name2" };

            Dictionary<string, string> actual = DepartmentRepository.GetDepartmentsDictionary();

            Assert.IsTrue(expected.Except(actual.Select(o=>o.Value)).Count() == 0);
            Assert.IsTrue(actual.Select(o => o.Value).Except(expected).Count() == 0);
            foreach (KeyValuePair<string, string> keyValuePair in actual)
            {
                ObjectId id;
                Assert.IsTrue(ObjectId.TryParse(keyValuePair.Key, out id));
            }
        }
Exemplo n.º 30
0
        private int CompareDirectoryWithProjects(List<string> filesToCompile, params string[] projectFiles)
        {
            var filesInProject = new List<string>();
            this.GetCompileItemsFromProjects(filesInProject, projectFiles);

            var missingFiles = filesToCompile.Except(filesInProject).ToList();
            if (missingFiles.Count > 0)
            {
                Console.WriteLine("The following files must be added to {0}", string.Join(";", projectFiles));
                foreach (var f in missingFiles)
                {
                    Console.WriteLine("  {0}", f);
                }
            }

            return missingFiles.Count;
        }