private void CreateProgram(MazakTestData dset, string program)
 {
     dset.TestPrograms.Add(new MazakProgramRow()
     {
         MainProgram = program, Comment = ""
     });
 }
 private void CreateFixture(MazakTestData dset, string name)
 {
     dset.TestFixtures.Add(new MazakFixtureRow()
     {
         Comment = "Insight", FixtureName = name
     });
 }
        private MazakTestData CreateReadSet()
        {
            var dset = new MazakTestData();

            CreateFixture(dset, "Test");
            return(dset);
        }
 private void CreatePallet(MazakTestData dset, int pal, string fix, int numProc)
 {
     for (int i = 1; i <= numProc; i++)
     {
         dset.TestPallets.Add(new MazakPalletRow()
         {
             Fixture = fix + ":" + i.ToString(), PalletNumber = pal
         });
     }
 }
        private void CreatePart(MazakTestData dset, string unique, string name, int numProc, string fix)
        {
            var pRow = new MazakPartRow()
            {
                Comment = "comment", PartName = name
            };

            dset.TestParts.Add(pRow);

            for (int proc = 1; proc <= numProc; proc++)
            {
                pRow.Processes.Add(new MazakPartProcessRow()
                {
                    ProcessNumber = proc,
                    Fixture       = fix + ":" + proc.ToString(),
                    PartName      = name,
                });
            }
        }
        public void DifferentPallets()
        {
            //Test when processes have different pallet lists
            var job1 = new JobPlan("Job1", 2, new int[] { 2, 2 });

            job1.PartName = "Part1";
            job1.SetPathGroup(1, 1, 1);
            job1.SetPathGroup(1, 2, 2);
            job1.SetPathGroup(2, 1, 1);
            job1.SetPathGroup(2, 2, 2);

            job1.AddProcessOnPallet(1, 1, "4");
            job1.AddProcessOnPallet(1, 1, "5");
            job1.AddProcessOnPallet(1, 2, "10");
            job1.AddProcessOnPallet(1, 2, "11");
            job1.AddProcessOnPallet(1, 2, "12");
            job1.AddProcessOnPallet(2, 1, "40");
            job1.AddProcessOnPallet(2, 1, "50");
            job1.AddProcessOnPallet(2, 2, "100");
            job1.AddProcessOnPallet(2, 2, "110");
            job1.AddProcessOnPallet(2, 2, "120");

            AddBasicStopsWithProg(job1);

            var job2 = new JobPlan("Job2", 2, new int[] { 2, 2 });

            job2.PartName = "Part2";

            //make path groups twisted
            job2.SetPathGroup(1, 1, 1);
            job2.SetPathGroup(1, 2, 2);
            job2.SetPathGroup(2, 1, 2);
            job2.SetPathGroup(2, 2, 1);

            //process groups on the same pallet.
            job2.AddProcessOnPallet(1, 1, "4");
            job2.AddProcessOnPallet(1, 1, "5");
            job2.AddProcessOnPallet(1, 2, "10");
            job2.AddProcessOnPallet(1, 2, "11");
            job2.AddProcessOnPallet(1, 2, "12");
            job2.AddProcessOnPallet(2, 2, "40");
            job2.AddProcessOnPallet(2, 2, "50");
            job2.AddProcessOnPallet(2, 1, "100");
            job2.AddProcessOnPallet(2, 1, "110");
            job2.AddProcessOnPallet(2, 1, "120");

            AddBasicStopsWithProg(job2);

            var job3 = new JobPlan("Job3", 2, new int[] { 2, 2 });

            job3.PartName = "Part3";

            job3.SetPathGroup(1, 1, 1);
            job3.SetPathGroup(1, 2, 2);
            job3.SetPathGroup(2, 1, 1);
            job3.SetPathGroup(2, 2, 2);

            //These do not all match above (some do, but not all)
            job3.AddProcessOnPallet(1, 1, "4");
            job3.AddProcessOnPallet(1, 1, "5");
            job3.AddProcessOnPallet(1, 2, "22");
            job3.AddProcessOnPallet(1, 2, "23");
            job3.AddProcessOnPallet(1, 2, "24");
            job3.AddProcessOnPallet(2, 1, "30");
            job3.AddProcessOnPallet(2, 1, "31");
            job3.AddProcessOnPallet(2, 2, "100");
            job3.AddProcessOnPallet(2, 2, "110");
            job3.AddProcessOnPallet(2, 2, "120");

            AddBasicStopsWithProg(job3);

            var log = new List <string>();

            var dset = new MazakTestData();

            CreateProgram(dset, "1234");

            var pMap = ConvertJobsToMazakParts.JobsToMazak(
                new JobPlan[] { job1, job2, job3 },
                3,
                dset,
                new HashSet <string>(),
                MazakDbType.MazakVersionE,
                checkPalletsUsedOnce: false,
                fmsSettings: new FMSSettings(),
                errors: log
                );

            if (log.Count > 0)
            {
                Assert.True(false, log[0]);
            }

            CheckNewFixtures(pMap, new string[] {
                "F:3:0:4:1",
                "F:3:1:40:2",
                "F:3:2:10:1",
                "F:3:3:100:2",
                "F:3:4:30:2",
                "F:3:5:22:1"
            });

            var trans = pMap.CreatePartPalletDatabaseRows();

            CheckPartProcessFromJob(trans, "Part1:3:1", 1, "F:3:0:4:1");
            CheckPartProcessFromJob(trans, "Part1:3:1", 2, "F:3:1:40:2");
            CheckPart(trans, "Part1:3:1", "Job1-Path1-1-0");

            CheckPartProcessFromJob(trans, "Part1:3:2", 1, "F:3:2:10:1");
            CheckPartProcessFromJob(trans, "Part1:3:2", 2, "F:3:3:100:2");
            CheckPart(trans, "Part1:3:2", "Job1-Path2-2-0");

            CheckPartProcessFromJob(trans, "Part2:3:1", 1, "F:3:0:4:1");
            CheckPartProcessFromJob(trans, "Part2:3:1", 2, "F:3:1:40:2");
            CheckPart(trans, "Part2:3:1", "Job2-Path1-2-0");

            CheckPartProcessFromJob(trans, "Part2:3:2", 1, "F:3:2:10:1");
            CheckPartProcessFromJob(trans, "Part2:3:2", 2, "F:3:3:100:2");
            CheckPart(trans, "Part2:3:2", "Job2-Path2-1-0");

            CheckPartProcessFromJob(trans, "Part3:3:1", 1, "F:3:0:4:1");
            CheckPartProcessFromJob(trans, "Part3:3:1", 2, "F:3:4:30:2");
            CheckPart(trans, "Part3:3:1", "Job3-Path1-1-0");

            CheckPartProcessFromJob(trans, "Part3:3:2", 1, "F:3:5:22:1");
            CheckPartProcessFromJob(trans, "Part3:3:2", 2, "F:3:3:100:2");
            CheckPart(trans, "Part3:3:2", "Job3-Path2-2-0");

            CheckSingleProcPalletGroup(trans, 31, "F:3:0:4:1", new int[] { 4, 5 });
            CheckSingleProcPalletGroup(trans, 32, "F:3:1:40:2", new int[] { 40, 50 });
            CheckSingleProcPalletGroup(trans, 33, "F:3:2:10:1", new int[] { 10, 11, 12 });
            CheckSingleProcPalletGroup(trans, 34, "F:3:3:100:2", new int[] { 100, 110, 120 });
            CheckSingleProcPalletGroup(trans, 35, "F:3:4:30:2", new int[] { 30, 31 });
            CheckSingleProcPalletGroup(trans, 36, "F:3:5:22:1", new int[] { 22, 23, 24 });

            AssertPartsPalletsDeleted(trans);
        }