예제 #1
0
        public void Test_Cell_AddCellPass_WithDuplicateTime()
        {
            Cell_NonStatic c = new Cell_NonStatic();

            c.AddPass(CellPassTests.ATestCellPass());

            Action act = () => c.AddPass(CellPassTests.ATestCellPass());

            act.Should().Throw <TRexException>();
        }
예제 #2
0
        public void Test_Cell_IntegrateCells_WithEmptySource()
        {
            CellPass cp1 = CellPassTests.ATestCellPass();

            Cell_NonStatic c1 = new Cell_NonStatic();

            c1.AddPass(cp1);

            Cell_NonStatic c2 = new Cell_NonStatic();

            // Test integration of cell with no cell passes
            c1.Integrate(c2, 0, c2.PassCount - 1, out int addedCount, out int modifiedCount);

            Assert.Equal(0, addedCount);
            Assert.Equal(0, modifiedCount);
        }
예제 #3
0
        public void Test_Cell_AddCellPassUnOrdered()
        {
            Cell_NonStatic c = new Cell_NonStatic();

            c.AddPass(CellPassTests.ATestCellPass2());

            Assert.Equal(1, c.PassCount);

            CellPass cp2 = CellPassTests.ATestCellPass2();

            Assert.True(c.Passes.GetElement(0).Equals(cp2), "Added cell pass not the same content as it was constructed with");

            c.AddPass(CellPassTests.ATestCellPass());

            Assert.Equal(2, c.PassCount);

            CellPass cp1 = CellPassTests.ATestCellPass();

            Assert.True(c.Passes.GetElement(0).Equals(cp1), "Added cell pass not the same content as it was constructed with");
        }
예제 #4
0
        public void Test_Cell_TopMostHeight()
        {
            Cell_NonStatic c1 = new Cell_NonStatic();

            // Add two cell passes in ascending order
            c1.AddPass(CellPassTests.ATestCellPass());
            c1.AddPass(CellPassTests.ATestCellPass2());

            Assert.Equal(2, c1.PassCount);
            Assert.Equal(50, c1.TopMostHeight);

            // Add two cell passes in descending order
            Cell_NonStatic c2 = new Cell_NonStatic();

            c2.AddPass(CellPassTests.ATestCellPass2());
            c2.AddPass(CellPassTests.ATestCellPass());

            Assert.Equal(2, c2.PassCount);
            Assert.Equal(50, c2.TopMostHeight);
        }
예제 #5
0
        public void Test_Cell_LocateTime()
        {
            // Create a cell with two cell passes with different times
            Cell_NonStatic c = new Cell_NonStatic();

            c.Passes = new TRexSpan <CellPass>(new CellPass[2], TRexSpan <CellPass> .NO_SLAB_INDEX, 0, 2, false);

            CellPass cp1 = CellPassTests.ATestCellPass();
            CellPass cp2 = CellPassTests.ATestCellPass2();

            c.AddPass(cp1);
            c.AddPass(cp2);

            // Check cp1 and cp2 are present in that order
            Assert.True(c.Passes.GetElement(0).Equals(cp1) && c.Passes.GetElement(1).Equals(cp2), "Two passes added are not in expected order");

            // Locate both with the time present in each of the contributing cell passes to ensure exact time matches
            // at the boundaries are preserved

            c.LocateTime(cp1.Time, out int cellPassIndex);
            Assert.Equal(0, cellPassIndex);
            Assert.True(c.Passes.GetElement(cellPassIndex).Equals(cp1), "Select (first) cell pass does not match pass added to cell");

            c.LocateTime(cp2.Time, out cellPassIndex);
            Assert.Equal(1, cellPassIndex);
            Assert.True(c.Passes.GetElement(cellPassIndex).Equals(cp2), "Select (second) cell pass does not match pass added to cell");

            // Locate the cell passes with modified times to cause no exact match to text the
            // returned insertion position is correct

            c.LocateTime(cp1.Time.AddMinutes(-1), out cellPassIndex);
            Assert.Equal(0, cellPassIndex);

            c.LocateTime(cp1.Time.AddMinutes(1), out cellPassIndex);
            Assert.Equal(1, cellPassIndex);

            c.LocateTime(cp2.Time.AddMinutes(1), out cellPassIndex);
            Assert.Equal(2, cellPassIndex);
        }
예제 #6
0
        public void Test_Cell_IntegrateCells_SingleCellPasses_Modified()
        {
            // Create cells with the same single cell pass in each
            CellPass cp1 = CellPassTests.ATestCellPass();

            Cell_NonStatic c1 = new Cell_NonStatic();

            c1.AddPass(cp1);

            Cell_NonStatic c2 = new Cell_NonStatic();

            c2.AddPass(cp1);

            // Test integration of the identical cell passes resulting in a single cell pass, 0 added and 0 modified (as identical cell passes are not a modification)
            c1.Integrate(c2, 0, c2.PassCount - 1, out int addedCount, out int modifiedCount);

            Assert.Equal(0, addedCount);
            Assert.Equal(0, modifiedCount);

            Assert.True(c2.PassCount == 1 && c2.Passes.GetElement(0).Equals(cp1), "Integration unexpectedly modified source cell");
            Assert.True(c1.PassCount == 1 && c1.Passes.GetElement(0).Equals(cp1),
                        "Result of integration two cells with the same single passes does not contain a single pass of the expected content");

            // Modify the cell pass in cell 2 to have a different machine ID, but same remaining state to determine if the modification count is set

            var cellPass = c2.Passes.GetElement(0);

            cellPass.InternalSiteModelMachineIndex = 10000;
            c2.Passes.SetElement(cellPass, 0);

            // Test integration of the identical cell passes resulting in a single cell pass, 0 added and 1 modified (as identical cell passes are not a modification)
            c1.Integrate(c2, 0, c2.PassCount - 1, out addedCount, out modifiedCount);

            Assert.Equal(0, addedCount);
            Assert.Equal(1, modifiedCount);

            Assert.Equal(1, c1.PassCount);
        }
예제 #7
0
        public void Test_Cell_IntegrateCells_CellPasses_NoModified_WithInvertedDates()
        {
            // Create cells with a single (different) cell pass in each
            CellPass cp1 = CellPassTests.ATestCellPass();
            CellPass cp2 = CellPassTests.ATestCellPass2();

            Cell_NonStatic c1 = new Cell_NonStatic();

            c1.AddPass(cp1);
            cp1.Time = cp1.Time.AddSeconds(1);
            c1.AddPass(cp1);

            Cell_NonStatic c2 = new Cell_NonStatic();

            c2.AddPass(cp2);
            cp2.Time = cp2.Time.AddSeconds(1);
            c2.AddPass(cp2);

            c2.Integrate(c1, 0, c1.PassCount - 1, out int addedCount, out int modifiedCount);

            Assert.Equal(2, addedCount);
            Assert.Equal(0, modifiedCount);
        }
예제 #8
0
        public void Test_Cell_IntegrateCells_SingleCellPasses_NoModified()
        {
            // Create cells with a single (different) cell pass in each
            CellPass cp1 = CellPassTests.ATestCellPass();
            CellPass cp2 = CellPassTests.ATestCellPass2();

            Cell_NonStatic c1 = new Cell_NonStatic();

            c1.AddPass(cp1);

            Cell_NonStatic c2 = new Cell_NonStatic();

            c2.AddPass(cp2);

            // Test integration of later cell pass to list with earlier cell pass resulting in 1 added and 0 modified
            c1.Integrate(c2, 0, c2.PassCount - 1, out int addedCount, out int modifiedCount);

            Assert.Equal(1, addedCount);
            Assert.Equal(0, modifiedCount);

            Assert.True(c2.PassCount == 1 && c2.Passes.GetElement(0).Equals(cp2), "Integration unexpectedly modified source cell");
            Assert.True(c1.PassCount == 2 && c1.Passes.GetElement(0).Equals(cp1) && c1.Passes.GetElement(1).Equals(cp2),
                        "Result of integration two cells with single passes does not contain two passes of the expected content");
        }