コード例 #1
0
        public void BenchmarkSimpleWriter()
        {
            //var buffer = new byte[500000];
            var memoryStream = new MemoryStream(buffer);
            var values       = new Dictionary <string, string>();

            values["Year"]              = "2008";
            values["Title"]             = "Iron Man";
            values["Production Studio"] = "Marvel Studios";

            foreach (var iteration in Benchmark.Iterations)
            {
                using (var streamWriter = new StreamWriter(memoryStream, Encoding.Default, 512, true))
                {
                    using (iteration.StartMeasurement())
                    {
                        var simpleWriter = new SimpleWriter(streamWriter);
                        simpleWriter.WriteHeader("Year", "Title", "Production Studio");
                        for (int innerIteration = 0; innerIteration < Benchmark.InnerIterationCount; innerIteration++)
                        {
                            simpleWriter.WriteLine(values);
                        }
                        streamWriter.Flush();
                    }
                }
                memoryStream.Seek(0, SeekOrigin.Begin);
            }
        }
コード例 #2
0
        public void BenchmarkSimpleWriterToFile()
        {
            var values = new Dictionary <string, string>();

            values["Year"]              = "2008";
            values["Title"]             = "Iron Man";
            values["Production Studio"] = "Marvel Studios";
            int outerIterations = 0;

            foreach (var iteration in Benchmark.Iterations)
            {
                var fileStream = new FileStream($"tempfile{outerIterations++}.csv", FileMode.Create, FileAccess.Write);
                using (var streamWriter = new StreamWriter(fileStream, Encoding.Default, 512, false))
                {
                    using (iteration.StartMeasurement())
                    {
                        var simpleWriter = new SimpleWriter(streamWriter);
                        simpleWriter.WriteHeader("Year", "Title", "Production Studio");
                        for (int innerIteration = 0; innerIteration < Benchmark.InnerIterationCount; innerIteration++)
                        {
                            simpleWriter.WriteLine(values);
                        }
                        streamWriter.Flush();
                    }
                }
            }
        }
コード例 #3
0
ファイル: UnitTest1.cs プロジェクト: jcabot21/netcoreinaction
        private void WriteMarvelCsv(SimpleWriter simpleWriter)
        {
            simpleWriter.WriteHeader("Year", "Title", "Production Studio");

            var values = new Dictionary <string, string>()
            {
                { "Year", "2008" },
                { "Title", "Iron Man" },
                { "Production Studio", Marvel }
            };

            simpleWriter.WriteLine(values);
            values["Title"] = "The Incredible Hulk";
            simpleWriter.WriteLine(values);
            values["Title"] = "Punisher: War Zone";
            simpleWriter.WriteLine(values);
            values["Year"]              = "2009";
            values["Title"]             = "X-Men Origins: Wolverine";
            values["Production Studio"] = Fox;
            simpleWriter.WriteLine(values);
            values["Year"]              = "2010";
            values["Title"]             = "Iron Man 2";
            values["Production Studio"] = Marvel;
            simpleWriter.WriteLine(values);
            values["Year"]  = "2011";
            values["Title"] = "Thor";
            simpleWriter.WriteLine(values);
            values["Title"]             = "X-Men: First Class";
            values["Production Studio"] = Fox;
            simpleWriter.WriteLine(values);
        }
コード例 #4
0
        static void Main(string[] args)
        {
            // separation of concerns
            //     different "concerns" or "considerations" in code shouldn't be tangled together
            // single responsibility principle (S in SOLID)
            //     a unit of code (e.g. class, method) should have just one responsibility.
            // DRY principle
            //     don't repeat yourself
            // KISS
            //     keep it simple stupid (unless it's on codesignal)

            // have a list of products
            IEnumerable <Product> catalog = GetProducts();

            // allow for some customization of that display to the user
            string input = null;

            while (input != "s" && input != "d")
            {
                Console.WriteLine("Enter s for simple, d for detailed: ");
                input = Console.ReadLine();
            }
            string input2 = null;

            while (input2 != "y" && input2 != "n")
            {
                Console.WriteLine("Sort? y/n: ");
                input2 = Console.ReadLine();
            }

            ISorter sorter;

            if (input2 == "y")
            {
                sorter = new PriceSorter();
            }
            else
            {
                sorter = new NonSorter();
            }

            IWriter writer;

            // display them to the user
            if (input == "s")
            {
                writer = new SimpleWriter(sorter);
            }
            else
            {
                writer = new DetailedWriter(sorter);
            }

            writer.FormatAndDisplay(catalog);

            // dependency inversion principle (D in SOLID)
            // - don't have classes depend on each other directly
            //   instead, have them depend on interfaces
        }
        public void Is_Instance_Of_Type_ISimplyWrite()
        {
            // Arrange
            SimpleWriter simpleWriter = new SimpleWriter();

            // Assert
            Assert.IsInstanceOfType(simpleWriter, typeof(ISimplyWrite));
        }
コード例 #6
0
        private static void RunTest(string fileName, string expected)
        {
            var services        = ServiceUtils.BuildServices();
            var templateFactory = services.GetRequiredService <ITemplateFactory>();
            var template        = templateFactory.GenerateFromPath($@"Tests/Templates/{fileName}.csx");

            var writer = new SimpleWriter();

            template.Execute(new List <ContainerInspectResponse>(), writer);
            var contents = writer.Written;

            Assert.Equal(expected, contents);
        }
コード例 #7
0
        public void TestSimpleWriter()
        {
            var memoryStream = new MemoryStream();
            var streamWriter = new StreamWriter(memoryStream);
            var simpleWriter = new SimpleWriter(streamWriter);

            WriteMarvelCsv(simpleWriter);
            streamWriter.Flush();
            memoryStream.Seek(0, SeekOrigin.Begin);
            var streamReader = new StreamReader(memoryStream);
            var testString   = streamReader.ReadToEnd();
            var refString    = GetReferenceMarvelCsv();

            Assert.Equal(refString, testString);
        }
コード例 #8
0
        protected async void OnTriggered(DockerGenConfiguration configuration)
        {
            var containers = await GetContainers(configuration);

            var writer   = new SimpleWriter();
            var template = _templateFactory.GenerateFromPath(configuration.Template);

            var containerInspections = containers
                                       .Select(c => c.ID)
                                       .Select(containerId => Client.Containers.InspectContainerAsync(containerId).Result)
                                       .ToList();

            await template.Execute(containerInspections, writer);

            var generatedContents = writer.Written;

            var targetFile = configuration.Destination;

            if (!Path.IsPathRooted(targetFile))
            {
                targetFile = Path.Combine(Directory.GetCurrentDirectory(), targetFile);
            }

            var currentFileContents = "";

            if (File.Exists(targetFile))
            {
                currentFileContents = File.ReadAllText(targetFile);
            }

            if (currentFileContents == "" || currentFileContents != generatedContents)
            {
                //Change detected lets write the contents
                File.Delete(targetFile);
                File.Create(targetFile);
                await File.WriteAllTextAsync(targetFile, generatedContents);

                await OnChanged(configuration);
            }
        }
コード例 #9
0
        static void Main(string[] args)
        {
            ISQLQueryWriter writer = new SimpleWriter();

            string response;

            response = SelectTest.TestComplexSelect(writer);
            Console.WriteLine(response);
            Console.WriteLine();

            response = SelectTest.TestCustomSelectString(writer);
            Console.WriteLine(response);
            Console.WriteLine();

            response = InsertTest.TestInsertWithKeys(writer);
            Console.WriteLine(response);
            Console.WriteLine();

            response = InsertTest.TestInsert(writer);
            Console.WriteLine(response);
            Console.WriteLine();

            response = UpdateTest.TestUpdate(writer);
            Console.WriteLine(response);
            Console.WriteLine();

            response = DeleteTest.Delete(writer);
            Console.WriteLine(response);
            Console.WriteLine();


            response = DeleteTest.DeleteAll(writer);
            Console.WriteLine(response);
            Console.WriteLine();

            Console.ReadLine();
        }
コード例 #10
0
        /*
         * This test can be used to make sure the GC can keep up
         * with the allocations in a LockFreeQueue
         */
        //[Test]
        public void LFQMemTest()
        {
            /*
             * We dump a huge amount of data into the queue and
             * make sure memory doesn't blow up
             */
            LockFreeQueue <object> queue = new LockFreeQueue <object>();
            SimpleReader           read  = new SimpleReader(null, queue);
            //We should try about 2^30 so make sure we would fill nearly fill the
            //memory if there was a leak
            int          runs  = 1 << 30;
            SimpleWriter write = new SimpleWriter(runs, new object(), queue);
            Thread       rt    = new Thread(read.Run);
            Thread       wt    = new Thread(write.Run);

            rt.Start();
            wt.Start();
            wt.Join();
            //Put in the stop value:
            queue.Enqueue(null);
            rt.Join();
            //We added one more item (null)
            Assert.AreEqual(write.Writes + 1, read.Reads, "Writes equals reads");
        }
コード例 #11
0
        static void Main(string[] args)
        {
            // separation of concerns
            // different concerns in code shouldn't be tangled together

            // single responsibility principle (S in SOLID)
            // a unit of code like class method should have just one responsibility

            // DRY principle do not repeat yourself
            // KISS Keep it simple stupid

            // functionalities
            // have a list of products
            List <Product> catalog = GetProducts();

            // user's choice of sort and display
            string userInput = null;

            while (userInput != "s" && userInput != "d")
            {
                Console.WriteLine("Enter s for simple, d for detailed");
                userInput = Console.ReadLine();
            }

            // dependency inversion principle (D in SOLID)
            // dont have classes depend on each other directly
            // instead, have them depend on
            //  A(B)  ,  A(Interface B)
            // polymorphism
            string userInput2 = null;

            while (userInput2 != "y" && userInput2 != "n")
            {
                Console.WriteLine("Have the list sorted? y/n ");
                userInput2 = Console.ReadLine();
            }

            ISorter sorter;

            if (userInput2 == "y")
            {
                sorter = new PriceSorter();
            }
            else
            {
                sorter = new NonSorter();
            }

            // sorted catalog goes in to writer
            IWriter writer;

            if (userInput == "s")
            {
                writer = new SimpleWriter(sorter);
            }
            else
            {
                writer = new DetailedWriter(sorter);
            }

            writer.FormatAndDisplay(catalog);
        }