public void ChangeColumn() { var allParaOccurrences = MakeAnalysesUsedN(1); var row0 = MakeRow("1a"); var cellPart0_1 = MakeWordGroup(row0, 1, allParaOccurrences[0], allParaOccurrences[0]); var cellPart0_1a = m_helper.MakeChartMarker(row0, 1, m_helper.GetAMarker()); var originalColumn = cellPart0_1.ColumnRA; var cellPartsToMove = new IConstituentChartCellPart[] { cellPart0_1, cellPart0_1a }; var newColumn = m_logic.AllMyColumns[2]; var hvoNewCol = newColumn.Hvo; EndSetupTask(); // SUT needs its own UOW to test Undo/Redo UndoableUnitOfWorkHelper.Do("TestChangeColumn", "TestChangeColumn", Cache.ActionHandlerAccessor, () => m_logic.ChangeColumn(cellPartsToMove, newColumn, row0)); VerifyChangeColumn(cellPartsToMove, newColumn, "cellPart should have been moved to new column"); // Now test Undo Assert.IsTrue(Cache.ActionHandlerAccessor.CanUndo()); Cache.ActionHandlerAccessor.Undo(); VerifyChangeColumn(cellPartsToMove, originalColumn, "cellPart should have returned to original column"); // And now Redo Assert.IsTrue(Cache.ActionHandlerAccessor.CanRedo()); Cache.ActionHandlerAccessor.Redo(); VerifyChangeColumn(cellPartsToMove, newColumn, "cellPart should have been moved again to new column"); }
public void ChangeRow() { var allParaOccurrences = MakeAnalysesUsedN(3); var row0 = MakeRow("1a"); var row1 = MakeRow("1b"); var cellPart0_1 = MakeWordGroup(row0, 1, allParaOccurrences[0], allParaOccurrences[0]); m_helper.MakeChartMarker(row0, 1, m_helper.GetAMarker()); MakeWordGroup(row1, 1, allParaOccurrences[1], allParaOccurrences[1]); MakeWordGroup(row1, 3, allParaOccurrences[2], allParaOccurrences[2]); var cellPartsToMove = new IConstituentChartCellPart[] { cellPart0_1 }; EndSetupTask(); // SUT needs its own UOW to test Undo/Redo // SUT UndoableUnitOfWorkHelper.Do("TestChangeRow", "TestChangeRow", Cache.ActionHandlerAccessor, () => m_logic.ChangeRow(cellPartsToMove, row0, row1, 0, 1)); VerifyChangeRow(row0, cellPartsToMove, row1, "cellParts should have been moved to new row", 1); // Now test Undo Assert.IsTrue(Cache.ActionHandlerAccessor.CanUndo()); Cache.ActionHandlerAccessor.Undo(); VerifyChangeRow(row1, cellPartsToMove, row0, "cellParts should have been moved back to original row by Undo", 0); // And now Redo Assert.IsTrue(Cache.ActionHandlerAccessor.CanRedo()); Cache.ActionHandlerAccessor.Redo(); VerifyChangeRow(row0, cellPartsToMove, row1, "cellParts should have been moved again to new row by redo", 1); }
/// <summary> /// Verify that the specified row of the chart exists and has the expected cell parts. /// </summary> /// <param name="index"></param> /// <param name="cellParts"></param> void VerifyRowContents(int index, IConstituentChartCellPart[] cellParts) { m_helper.VerifyRowCells(index, cellParts); }
private static void AssertMergeAfter(bool expectedState, IConstituentChartCellPart cellPart, string message) { Assert.AreEqual(expectedState, cellPart.MergesAfter, message); }
protected internal override void ChangeColumnInternal(IConstituentChartCellPart[] partsToMove, ICmPossibility newCol) { if (m_fRecordBasicEdits) m_events.Add(new object[] { "change column internal", partsToMove, newCol }); else base.ChangeColumnInternal(partsToMove, newCol); }
public override void ChangeColumn(IConstituentChartCellPart[] partsToMove, ICmPossibility newCol, IConstChartRow row) { if (m_fRecordBasicEdits) m_events.Add(new object[] { "change column", partsToMove, newCol, row }); else base.ChangeColumn(partsToMove, newCol, row); }
/// <summary> /// Return true if the CellPart is a ConstChartTag, but the Tag is null, /// because then its a "Missing" marker. /// Takes the actual CellPart object. /// </summary> /// <param name="cellPart"></param> /// <returns></returns> private static bool IsMissingMkr(IConstituentChartCellPart cellPart) { var part = cellPart as IConstChartTag; return part != null && part.TagRA == null; }
/// <summary> /// Return true if the CellPart is a ConstChartTag (which in a CellPart list makes it /// a reference to a CmPossibility), also known as a generic marker. But we still /// want to return false if the Tag is null, because then its a "Missing" marker. /// This version takes the actual CellPart object. /// </summary> /// <param name="cellPart"></param> /// <returns></returns> private static bool IsListRef(IConstituentChartCellPart cellPart) { var part = cellPart as IConstChartTag; return part != null && part.TagRA != null; }
private void AddCellPartToCell(IConstituentChartCellPart cellPart) { var fSwitchBrackets = m_chart.IsRightToLeft && !(cellPart is IConstChartWordGroup); if (m_cCellPartsInCurrentCell != 0) m_vwenv.AddString(m_this.SpaceString); m_cCellPartsInCurrentCell++; if (m_icellpart == m_icellPartOpenClause && !fSwitchBrackets) { AddOpenBracketBeforeDepClause(); } // RightToLeft weirdness because non-wordgroup stuff doesn't work right! if (m_icellpart == m_icellPartCloseClause && fSwitchBrackets) { AddCloseBracketAfterDepClause(); } if (ConstituentChartLogic.IsMovedText(cellPart)) m_vwenv.AddObj(cellPart.Hvo, m_this, ConstChartVc.kfragMovedTextCellPart); // Is its target a CmPossibility? else if (IsListRef(cellPart)) { // If we're about to add our first CellPart and its a ConstChartTag, see if AutoMissingMarker flies. if (m_cCellPartsInCurrentCell == 1 && m_chart.Logic.ColumnHasAutoMissingMarkers(m_iLastColForWhichCellExists)) { InsertAutoMissingMarker(m_iLastColForWhichCellExists); m_cCellPartsInCurrentCell++; } m_vwenv.AddObj(cellPart.Hvo, m_this, ConstChartVc.kfragChartListItem); } // Is its target a user's missing marker (not auto) else if (IsMissingMkr(cellPart)) { m_vwenv.AddString(m_missMkr); } else { m_vwenv.AddObj(cellPart.Hvo, m_this, ConstChartVc.kfragCellPart); } if (m_icellpart == m_icellPartCloseClause && !fSwitchBrackets) { AddCloseBracketAfterDepClause(); } // RightToLeft weirdness because non-wordgroup stuff doesn't work right! if (m_icellpart == m_icellPartOpenClause && fSwitchBrackets) { AddOpenBracketBeforeDepClause(); } }