コード例 #1
0
        public void ManyPolylinesMustApplyCorrectly()
        {
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
            entity.Get <DxfFileContent>().dfxDocument = GiveMe.DxfDocument
                                                        .WithCircle(200)
                                                        .WithPolylines(GiveMe.DxfPolyline
                                                                       .WithVertex(0, 150)
                                                                       .WithVertex(150, 0)
                                                                       .WithVertex(0, -150)
                                                                       .WithVertex(-150, 0)
                                                                       .Please(),
                                                                       GiveMe.DxfPolyline
                                                                       .WithVertex(0, 100)
                                                                       .WithVertex(100, 0)
                                                                       .WithVertex(0, -100)
                                                                       .WithVertex(-100, 0)
                                                                       .Please())
                                                        .Please();

            System.Run();

            var drillParameters = ncParametersFilter.Get1(0).drillParameters;

            Assert.That(drillParameters.Count(), Is.EqualTo(8));
        }
コード例 #2
0
        public void ClosestAngleMustApplyWithDifferentSignForEvenPolyline()
        {
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
            entity.Get <DxfFileContent>().dfxDocument = GiveMe.DxfDocument
                                                        .WithCircle(200)
                                                        .WithPolylines(GiveMe.DxfPolyline
                                                                       .WithVertex(0, 20)
                                                                       .Please())
                                                        .WithPolylines(GiveMe.DxfPolyline
                                                                       .WithVertex(0, 150)
                                                                       .WithVertex(150, 0)
                                                                       .WithVertex(-75, 75)
                                                                       .WithVertex(150, 0)
                                                                       .Please()).Please();

            System.Run();

            var drillParameters = ncParametersFilter.Get1(0).drillParameters.ToArray();

            Assert.That(drillParameters[0].offsetY, Is.EqualTo(0));
            Assert.That(drillParameters[1].offsetY, Is.EqualTo(90));
            Assert.That(drillParameters[2].offsetY, Is.EqualTo(-135));
            Assert.That(drillParameters[3].offsetY, Is.EqualTo(45));
        }
コード例 #3
0
        public void EvenPolylinesMustApplyWithReversedSign()
        {
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
            entity.Get <DxfFileContent>().dfxDocument = GiveMe.DxfDocument
                                                        .WithCircle(200)
                                                        .WithPolylines(GiveMe.DxfPolyline
                                                                       .WithVertex(0, 150)
                                                                       .WithVertex(150, 0)
                                                                       .WithVertex(0, -150)
                                                                       .WithVertex(-150, 0)
                                                                       .Please(),
                                                                       GiveMe.DxfPolyline
                                                                       .WithVertex(0, 100)
                                                                       .WithVertex(100, 0)
                                                                       .WithVertex(0, -100)
                                                                       .WithVertex(-100, 0)
                                                                       .Please())
                                                        .Please();

            System.Run();

            var drillParameters = ncParametersFilter.Get1(0).drillParameters.ToArray();

            Assert.That(drillParameters.Take(4).Select(o => o.offsetY), Is.All.GreaterThanOrEqualTo(0));
            Assert.That(drillParameters.Skip(4).Select(o => o.offsetY), Is.All.LessThanOrEqualTo(0));
        }
コード例 #4
0
        public void ObservableCanExecuteShouldShowUpInCommand()
        {
            var input = new[] {true, false, false, true, false, true};
            var result = (new TestScheduler()).With(sched => {
                var can_execute = new Subject<bool>();
                var fixture = createCommand(can_execute, sched);
                var changes_as_observable = fixture.CanExecuteObservable.CreateCollection();

                int change_event_count = 0;
                fixture.CanExecuteChanged += (o, e) => { change_event_count++; };
                input.Run(x => {
                    can_execute.OnNext(x);
                    sched.Start();
                    Assert.Equal(x, fixture.CanExecute(null));
                });

                // N.B. We check against '5' instead of 6 because we're supposed to 
                // suppress changes that aren't actually changes i.e. false => false
                sched.AdvanceToMs(10*1000);
                return changes_as_observable;
            });

            // NB: Skip(1) is because CanExecuteObservable should have
            // BehaviorSubject Nature(tm)
            input.DistinctUntilChanged().AssertAreEqual(result.Skip(1).ToList());
        }
コード例 #5
0
        public long Solve(string input)
        {
            var system = new System(ParseInput(input));

            system.Run();
            return(system.MemorySum());
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: chantsunman/Toolkit
        static void Main()
        {
$if$ ($sharpdx_platform_winrt_xaml$ == true)            global::Windows.UI.Xaml.Application.Start((p) => new App());
$else$            using (var program = new $safeclassname$())
                program.Run();
$endif$
        }
コード例 #7
0
        public void ThirdRowIsStartPoint()
        {
            World.NewEntity().Get <NcParameters>() = BuildNcParameters();

            System.Run();

            Assert.That(ncProgramFilter.Get1(0).programText.Split("\r\n")[2], Is.EqualTo("X10Y10"));
        }
コード例 #8
0
        public void ThirdRowFromTheEndIsEndPoint()
        {
            World.NewEntity().Get <NcParameters>() = BuildNcParameters();

            System.Run();

            Assert.That(ncProgramFilter.Get1(0).programText.Split("\r\n").Reverse().ToArray()[2], Is.EqualTo("G0X100Y100"));
        }
コード例 #9
0
        public void SavedFileNameEqualToSourceDxfFileNameAndExtensionIsNc()
        {
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path = "C:\\tmp\\dxf_file.dxf";
            entity.Get <NcProgram>().programText  = "NCPROGRAMTEXT";

            System.Run();

            Assert.DoesNotThrow(() => { var _ = FileSystemServiceStub.SavedFiles["C:\\tmp\\dxf_file.nc"]; });
        }
コード例 #10
0
        public void SavedFileConsistsOfNcProgramText()
        {
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path = "C:\\tmp\\dxf_file.dxf";
            entity.Get <NcProgram>().programText  = "NCPROGRAMTEXT";

            System.Run();

            Assert.That(FileSystemServiceStub.SavedFiles["C:\\tmp\\dxf_file.nc"], Is.EqualTo("NCPROGRAMTEXT"));
        }
コード例 #11
0
        public void DxfFileDefinitionComponentsAreCreatedForEachFile()
        {
            FileSystemServiceStub.FilesInWorkingDirectory.Add("C:\\tmp\\file1.dxf");
            FileSystemServiceStub.FilesInWorkingDirectory.Add("C:\\tmp\\file2.dxf");

            System.Run();

            Assert.That(dxfFileDefinitionFilter.GetEntitiesCount(), Is.EqualTo(2));
            foreach (var idx in dxfFileDefinitionFilter)
            {
                ref var dxfFileDefinition = ref dxfFileDefinitionFilter.Get1(idx);
                Assert.That(dxfFileDefinition.path, Is.EqualTo(FileSystemServiceStub.FilesInWorkingDirectory[idx]));
            }
コード例 #12
0
        public void EnsureSyncPointInformationDoesntSerializeExtraJunk()
        {
            var template = new SyncPointInformation(Guid.NewGuid(), Guid.NewGuid(), typeof (string), "Foo", DateTimeOffset.MinValue);
            var json = JSONHelper.Serialize(template);
            this.Log().Debug(json);

            var expected = new[] {
                "RootObjectHash",
                "ParentSyncPoint",
                "RootObjectTypeName",
                "Qualifier",
                "CreatedOn"
            };

            // TODO: This test sucks out loud
            expected.Run(x => Assert.True(json.Contains(x)));
        }
コード例 #13
0
        public int IfCirclesCountLessOneThenEntityMustBeDeleted(int circlesCount)
        {
            var document = new DxfDocument();

            for (var i = 0; i < circlesCount; i++)
            {
                document.AddEntity(new Circle());
            }
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
            entity.Get <DxfFileContent>().dfxDocument = document;

            System.Run();

            return(dxfFileContentFilter.GetEntitiesCount());
        }
コード例 #14
0
        public void CountOfDrillVertexesMustBeEqualToPolylineVertexes()
        {
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
            entity.Get <DxfFileContent>().dfxDocument = GiveMe.DxfDocument
                                                        .WithCircle(200)
                                                        .WithPolylines(GiveMe.DxfPolyline
                                                                       .WithVertex(0, 150)
                                                                       .WithVertex(150, 0)
                                                                       .WithVertex(0, -150)
                                                                       .WithVertex(-150, 0)
                                                                       .Please()).Please();

            System.Run();

            Assert.That(ncParametersFilter.Get1(0).drillParameters.Count(), Is.EqualTo(4));
        }
コード例 #15
0
        public int ForEachEntityNcParametersComponentMustBeAdded(int entitiesCount)
        {
            for (var i = 0; i < entitiesCount; i++)
            {
                var entity = World.NewEntity();
                entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
                entity.Get <DxfFileContent>().dfxDocument = GiveMe.DxfDocument
                                                            .WithCircle(200)
                                                            .WithPolylines(GiveMe.DxfPolyline
                                                                           .WithVertex(0, 150)
                                                                           .WithVertex(150, 0)
                                                                           .WithVertex(0, -150)
                                                                           .WithVertex(-150, 0)
                                                                           .Please()).Please();
            }

            System.Run();

            return(ncParametersFilter.GetEntitiesCount());
        }
コード例 #16
0
        public void EndPointMustBeEqualToEndPointFromConfigurationService()
        {
            ConfigurationServiceStub.EndPoint = new netDxf.Vector2(230, 123);
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
            entity.Get <DxfFileContent>().dfxDocument = GiveMe.DxfDocument
                                                        .WithCircle(200)
                                                        .WithPolylines(GiveMe.DxfPolyline
                                                                       .WithVertex(0, 150)
                                                                       .WithVertex(150, 0)
                                                                       .WithVertex(0, -150)
                                                                       .WithVertex(-150, 0)
                                                                       .Please()).Please();

            System.Run();

            Assert.That(ncParametersFilter.Get1(0).endPointX, Is.EqualTo(230));
            Assert.That(ncParametersFilter.Get1(0).endPointY, Is.EqualTo(123));
        }
コード例 #17
0
        public void DxfFileContentComponentAreCreated()
        {
            var file1Entity = World.NewEntity();

            file1Entity.Get <DxfFileDefinition>().path = "C:\\tmp\\file1.dxf";
            var file2Entity = World.NewEntity();

            file2Entity.Get <DxfFileDefinition>().path = "C:\\tmp\\file2.dxf";
            var documents = new[] { new DxfDocument(), new DxfDocument() };

            DxfServiceStub.DxfDocuments.Add("C:\\tmp\\file1.dxf", documents[0]);
            DxfServiceStub.DxfDocuments.Add("C:\\tmp\\file2.dxf", documents[1]);

            System.Run();

            foreach (var idx in dxfFileContentFilter)
            {
                ref var dxfFileContentComponent = ref dxfFileContentFilter.Get1(idx);
                Assert.That(dxfFileContentComponent.dfxDocument, Is.EqualTo(documents[idx]));
            }
コード例 #18
0
        public int IfAnyPolylineVertexIsOutsideTheBiggestCircleThenEntityMustBeDeleted(bool hasPolylineVertexOutsideTheBiggestCircle)
        {
            var document = new DxfDocument();

            document.AddEntity(new Circle(new Vector2(0, 0), 100));
            var polyline = new LwPolyline(new[] { new LwPolylineVertex(10, 10), new LwPolylineVertex(20, 20) }, true);

            if (hasPolylineVertexOutsideTheBiggestCircle)
            {
                polyline.Vertexes.Add(new LwPolylineVertex(200, 300));
            }
            document.AddEntity(polyline);
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
            entity.Get <DxfFileContent>().dfxDocument = document;

            System.Run();

            return(dxfFileContentFilter.GetEntitiesCount());
        }
コード例 #19
0
        public void MessageBusSmokeTest()
        {
            var input = new[] {1, 2, 3, 4};

            var result = (new TestScheduler()).With(sched => {
                var source = new Subject<int>();
                var fixture = new MessageBus();

                fixture.RegisterMessageSource(source, "Test");
                Assert.False(fixture.IsRegistered(typeof (int)));
                Assert.False(fixture.IsRegistered(typeof (int), "Foo"));

                var output = fixture.Listen<int>("Test").CreateCollection();

                input.Run(source.OnNext);

                sched.Start();
                return output;
            });

            input.AssertAreEqual(result);
        }
コード例 #20
0
        public void StartPointMustBeEqualToBiggestCircleRadiusMinusStartingOffsetOnXAxisAndZeroOnYAxis()
        {
            ConfigurationServiceStub.StartPointXOffset = -143;
            var document = GiveMe.DxfDocument
                           .WithCircle(200)
                           .WithPolylines(GiveMe.DxfPolyline
                                          .WithVertex(0, 150)
                                          .WithVertex(150, 0)
                                          .WithVertex(0, -150)
                                          .WithVertex(-150, 0)
                                          .Please()).Please();

            document.Circles.First().Radius = 412;
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
            entity.Get <DxfFileContent>().dfxDocument = document;

            System.Run();

            Assert.That(ncParametersFilter.Get1(0).startPointX, Is.EqualTo(412 - 143));
            Assert.That(ncParametersFilter.Get1(0).startPointY, Is.EqualTo(0));
        }
コード例 #21
0
        public void XOffsetMustApplyCorrectly()
        {
            var entity = World.NewEntity();

            entity.Get <DxfFileDefinition>().path     = "C:\\tmp\\dxf_file.dxf";
            entity.Get <DxfFileContent>().dfxDocument = GiveMe.DxfDocument
                                                        .WithCircle(200)
                                                        .WithPolylines(GiveMe.DxfPolyline
                                                                       .WithVertex(0, 140)
                                                                       .WithVertex(130, 0)
                                                                       .WithVertex(0, -150)
                                                                       .WithVertex(-160, 0)
                                                                       .Please()).Please();

            System.Run();

            var drillParameters = ncParametersFilter.Get1(0).drillParameters.ToArray();

            Assert.That(drillParameters[0].offsetX, Is.EqualTo(-60));
            Assert.That(drillParameters[1].offsetX, Is.EqualTo(-10));
            Assert.That(drillParameters[2].offsetX, Is.EqualTo(20));
            Assert.That(drillParameters[3].offsetX, Is.EqualTo(10));
        }
コード例 #22
0
        public void ObservableCanExecuteShouldShowUpInCommand()
        {
            var input = new[] {true, false, false, true, false, true};
            var result = (new TestScheduler()).With(sched => {
                var can_execute = new Subject<bool>();
                var fixture = createCommand(can_execute, sched);
                var changes_as_observable = fixture.CanExecuteObservable.CreateCollection();

                int change_event_count = 0;
                fixture.CanExecuteChanged += (o, e) => { change_event_count++; };
                input.Run(x => {
                    this.Log().InfoFormat("input = {0}", x);
                    can_execute.OnNext(x);
                    sched.Run();
                    Assert.Equal(x, fixture.CanExecute(null));
                });

                // N.B. We check against '5' instead of 6 because we're supposed to
                // suppress changes that aren't actually changes i.e. false => false
                sched.RunToMilliseconds(10 * 1000);
                return changes_as_observable;
            });

            input.DistinctUntilChanged().AssertAreEqual(result.ToList());
        }
コード例 #23
0
        public void ObservableCanExecuteShouldShowUpInCommand()
        {
            var can_execute = new Subject<bool>();
            var fixture = new ReactiveCommand(can_execute, null);
            var changes_as_observable = new ListObservable<bool>(fixture.CanExecuteObservable);

            var input = new[] { true, false, false, true, false, true };

            int change_event_count = 0;
            fixture.CanExecuteChanged += (o, e) => { change_event_count++; };
            input.Run(x => {
                can_execute.OnNext(x);
                Assert.AreEqual(x, fixture.CanExecute(null));
            });

            // N.B. We check against '5' instead of 6 because we're supposed to
            // suppress changes that aren't actually changes i.e. false => false
            can_execute.OnCompleted();
            Assert.AreEqual(5, change_event_count);

            input.Zip(changes_as_observable.ToList(), (expected, actual) => new { expected, actual })
                 .Do(Console.WriteLine)
                 .Run(x => Assert.AreEqual(x.expected, x.actual));
        }
コード例 #24
0
        public void MultipleSubscribesShouldntResultInMultipleNotifications()
        {
            var input = new[] { 1, 2, 1, 2 };
            var fixture = new ReactiveCommand(null, null);

            var odd_list = new List<int>();
            var even_list = new List<int>();
            fixture.Where(x => ((int)x) % 2 != 0).Subscribe(x => odd_list.Add((int)x));
            fixture.Where(x => ((int)x) % 2 == 0).Subscribe(x => even_list.Add((int)x));

            input.Run(x => fixture.Execute(x));

            new[]{1,1}.Zip(odd_list, (expected, actual) => new { expected, actual })
                .Run(x => Assert.AreEqual(x.expected, x.actual));

            new[]{2,2}.Zip(even_list, (expected, actual) => new { expected, actual })
                .Run(x => Assert.AreEqual(x.expected, x.actual));
        }
コード例 #25
0
        public override void Do(World value, Model model)
        {
            var run1 = System <T1> .Run(() => _counter1 ++);

            var nodes1 = new[]
コード例 #26
0
        public void DisposeTest()
        {
            var input = new[] { 1, 1, 1, 1, 1 };
            var fixture = new QueuedAsyncMRUCache<int, int>(x => { Thread.Sleep(1000); return x * 5; }, 5, 2);

            input.Run(x => fixture.AsyncGet(x));
            fixture.Dispose();

            bool threw = false;
            try {
                fixture.AsyncGet(2);
            } catch(Exception ex) {
                this.Log().Info("Threw exception correctly", ex);
                threw = true;
            }
            Assert.IsTrue(threw);
        }
コード例 #27
0
        public void MultipleSubscribesShouldntResultInMultipleNotifications()
        {
            var input = new[] { 1, 2, 1, 2 };
            var sched = new TestScheduler();
            var fixture = new ReactiveCommand(null, sched);

            var odd_list = new List<int>();
            var even_list = new List<int>();
            fixture.Where(x => ((int)x) % 2 != 0).Subscribe(x => odd_list.Add((int)x));
            fixture.Where(x => ((int)x) % 2 == 0).Subscribe(x => even_list.Add((int)x));

            input.Run(x => fixture.Execute(x));
            sched.RunToMilliseconds(1000);

            new[]{1,1}.AssertAreEqual(odd_list);
            new[]{2,2}.AssertAreEqual(even_list);
        }
コード例 #28
0
        public void ObservableCanExecuteShouldShowUpInCommand()
        {
            var input = new[] {true, false, false, true, false, true};
            var result = (new TestScheduler()).With(sched => {
                var can_execute = new Subject<bool>();
                var fixture = new ReactiveCommand(can_execute, null);
                var changes_as_observable = new ListObservable<bool>(fixture.CanExecuteObservable);

                int change_event_count = 0;
                fixture.CanExecuteChanged += (o, e) => { change_event_count++; };
                input.Run(x => {
                    can_execute.OnNext(x);
                    sched.Run();
                    Assert.AreEqual(x, fixture.CanExecute(null));
                });

                // N.B. We check against '5' instead of 6 because we're supposed to
                // suppress changes that aren't actually changes i.e. false => false
                can_execute.OnCompleted();
                sched.Run();
                Assert.AreEqual(5, change_event_count);

                return changes_as_observable;
            });

            input.AssertAreEqual(result.ToList());
        }
        public void CanGenerate_Multithreaded()
        {
            var ids = new ConcurrentBag<KeyValuePair<Int32, UInt64>>();

            var cts = new CancellationTokenSource();
            
            ParameterizedThreadStart generateIds = (token) =>
            {
                var ct = (CancellationToken)token;

                while (!ct.IsCancellationRequested)
                {
                    var newIds = new ulong[10000];
                    for (int i = 0; i < 10000; i++)
                    {
                        newIds[i] = _generator.Generate();
                    }

                    newIds.Run(x => ids.Add(KeyValuePair.Create(Thread.CurrentThread.ManagedThreadId, x)));
                }
            };

            var threads = new[]
            {
                new Thread(generateIds),
                new Thread(generateIds),
                new Thread(generateIds),
                new Thread(generateIds)
            };

            threads.Run(t => t.Start(cts.Token));

            Thread.Sleep(1000);

            cts.Cancel();

            threads.Run(t => t.Join());

            var distinctIds = ids.Select(x => x.Value).Distinct().ToArray();
            Assert.IsTrue(ids.Count > 0, "Count wasn't greater than zero.");
            Assert.IsTrue(ids.Count == distinctIds.Count(), "Counts don't match!");

            Console.WriteLine("Id count: {0}", ids.Count);

            var distinctThreadIds = ids.Select(x => x.Key).Distinct().ToArray();
            Assert.IsTrue(distinctThreadIds.Length > 1, "Distinct threads not greater than one.");
        }