Ejemplo n.º 1
0
        public void FindRootMatchAndWriteFragmentTest()
        {
            var outPath    = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles\\TestOutputFile.txt");
            var toCSWriter = new ToCSWriter(outPath);

            var path     = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles\\TestFile.cs");
            var fileInfo = new FileInfo(path);
            var tree     = CSTreeCreator.CreateTree(fileInfo, null);

            toCSWriter.Initialize(null, new LabeledTree[] { tree });

            var method1 = FindMethod1(tree.Root);

            Assert.IsNotNull(method1);

            var containingElement = method1.Parent.Parent;
            var leaves            = toCSWriter.RetrieveFragmentLeaves(containingElement as CSNode);

            Assert.True(leaves.Count > 0);

            var anyLeavesToWrite    = leaves.Any(l => l.CouldBeWritten);
            var anyLeavesWithAMatch = leaves.Any(l => l.IsExistingRoslynNode && l.UseRoslynMatchToWrite);

            Assert.True(anyLeavesToWrite);
            Assert.True(anyLeavesWithAMatch);

            toCSWriter.FindRootMatchAndWriteFragment(containingElement as CSNode, leaves);
            // Take a look at TestFiles\TestOutputFile.txt to see the result.
        }
        /*
         * [Test, Ignore("Needs to be run on purpose. Can take a lot of time to run.")]
         * public void TestThatGivenAndTrueTypeAreEqual()
         * {
         *  var labeledTrees = CreateLabeledTrees(@"C:\Users\nenad\Desktop\Nnd\doktorske\sets\testgibbs2", @"C:\Users\nenad\Desktop\Nnd\doktorske\sets\out1000");
         *
         *  var pCFGComposer = new LabeledTreePCFGComposer(labeledTrees.ToList());
         *  pCFGComposer.CalculateProbabilities();
         *
         *  ToCSWriter writer = new ToCSWriter(@"C:\Users\nenad\Desktop\Nnd\doktorske\out1000\idioms\idioms2.txt");
         *  var sampler = new TBSampler(writer);
         *  sampler.BookKeeper = new ExtendedBookKeeper();
         *  sampler.Initialize(pCFGComposer, labeledTrees);
         *
         *  try
         *  {
         *      sampler.Train(10, 10, 3);
         *  }
         *  catch (ArgumentException e)
         *  {
         *      Assert.Fail(e.Message);
         *  }
         *
         *  Assert.Pass();
         * }
         */
        static LabeledTree[] CreateLabeledTrees(string sourceDirectory, string outputDirectory)
        {
            var directoryInfo = new DirectoryInfo(sourceDirectory);
            var files         = directoryInfo.GetFiles();

            LabeledTree[] labeledTrees = new LabeledTree[files.Length];

            Parallel.For(0, files.Length, (index) =>
            {
                var labeledTree = CSTreeCreator.CreateTree(files[index], outputDirectory);
                LabeledTreeTransformations.Binarize(labeledTree.Root, new CSNodeCreator());
                labeledTrees[index] = labeledTree;
            });

            return(labeledTrees);
        }