public void EditMoveDown() { InterlinLineChoices choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); // To make it less confusing, here we add them in an order that does not produce // reordering. MakeStandardState(choices); //choices.Add(InterlinLineChoices.kflidWord); // 0 //choices.Add(InterlinLineChoices.kflidMorphemes); // 1 //choices.Add(InterlinLineChoices.kflidLexEntries); //2 //choices.Add(InterlinLineChoices.kflidLexGloss); //3 //choices.Add(InterlinLineChoices.kflidLexPos); //4 //choices.Add(InterlinLineChoices.kflidWordGloss); //5 //choices.Add(InterlinLineChoices.kflidWordPos); //6 //choices.Add(InterlinLineChoices.kflidFreeTrans); //7 //choices.Add(InterlinLineChoices.kflidLitTrans); //8 Assert.IsTrue(choices.OkToMoveDown(0)); // word line Assert.IsTrue(choices.OkToMoveDown(1)); // morphemes Assert.IsTrue(choices.OkToMoveDown(2)); // lex entries Assert.IsTrue(choices.OkToMoveDown(3)); // lex gloss Assert.IsTrue(choices.OkToMoveDown(4)); // lex pos -- whole morph bundle moves down Assert.IsTrue(choices.OkToMoveDown(5)); // Word gloss Assert.IsFalse(choices.OkToMoveDown(6)); // Word pos can't go past free Assert.IsTrue(choices.OkToMoveDown(7)); // free trans Assert.IsFalse(choices.OkToMoveDown(8)); // lit trans -- last can't go down choices.MoveDown(3); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidLexPos, choices[3].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); choices.MoveDown(4); // Moves past whole morpheme bundle Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[1].Flid); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[2].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); // Now, the morphemes line can move up, to move the whole bundle. Assert.IsTrue(choices.OkToMoveDown(1)); // morphemes line now below word gloss. choices.MoveDown(1); // whole bundle moves. Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[5].Flid); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[1].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[2].Flid); choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); choices.MoveDown(5); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidWordPos, choices[5].Flid); Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[6].Flid); choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); choices.MoveDown(7); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidLitTrans, choices[7].Flid); Assert.AreEqual(InterlinLineChoices.kflidFreeTrans, choices[8].Flid); // Left out a lot of the complicated cases, since move down is just implemented // as an inverse MoveUp. }
public void EditMoveDown() { InterlinLineChoices choices = new EditableInterlinLineChoices(0, kwsAnalysis); // To make it less confusing, here we add them in an order that does not produce // reordering. MakeStandardState(choices); //choices.Add(InterlinLineChoices.kflidWord); // 0 //choices.Add(InterlinLineChoices.kflidMorphemes); // 1 //choices.Add(InterlinLineChoices.kflidLexEntries); //2 //choices.Add(InterlinLineChoices.kflidLexGloss); //3 //choices.Add(InterlinLineChoices.kflidLexPos); //4 //choices.Add(InterlinLineChoices.kflidWordGloss); //5 //choices.Add(InterlinLineChoices.kflidWordPos); //6 //choices.Add(InterlinLineChoices.kflidFreeTrans); //7 //choices.Add(InterlinLineChoices.kflidLitTrans); //8 Assert.IsTrue(choices.OkToMoveDown(0)); // word line Assert.IsTrue(choices.OkToMoveDown(1)); // morphemes Assert.IsTrue(choices.OkToMoveDown(2)); // lex entries Assert.IsTrue(choices.OkToMoveDown(3)); // lex gloss Assert.IsTrue(choices.OkToMoveDown(4)); // lex pos -- whole morph bundle moves down Assert.IsTrue(choices.OkToMoveDown(5)); // Word gloss Assert.IsFalse(choices.OkToMoveDown(6)); // Word pos can't go past free Assert.IsTrue(choices.OkToMoveDown(7)); // free trans Assert.IsFalse(choices.OkToMoveDown(8)); // lit trans -- last can't go down choices.MoveDown(3); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidLexPos, choices[3].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); choices.MoveDown(4); // Moves past whole morpheme bundle Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[1].Flid); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[2].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); // Now, the morphemes line can move up, to move the whole bundle. Assert.IsTrue(choices.OkToMoveDown(1)); // morphemes line now below word gloss. choices.MoveDown(1); // whole bundle moves. Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[5].Flid); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[1].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[2].Flid); choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); choices.MoveDown(5); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidWordPos, choices[5].Flid); Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[6].Flid); choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); choices.MoveDown(7); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidLitTrans, choices[7].Flid); Assert.AreEqual(InterlinLineChoices.kflidFreeTrans, choices[8].Flid); // Left out a lot of the complicated cases, since move down is just implemented // as an inverse MoveUp. }
public void EditMoveUp() { InterlinLineChoices choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); // To make it less confusing, here we add them in an order that does not produce // reordering. MakeStandardState(choices); //choices.Add(InterlinLineChoices.kflidWord); // 0 //choices.Add(InterlinLineChoices.kflidMorphemes); // 1 //choices.Add(InterlinLineChoices.kflidLexEntries); //2 //choices.Add(InterlinLineChoices.kflidLexGloss); //3 //choices.Add(InterlinLineChoices.kflidLexPos); //4 //choices.Add(InterlinLineChoices.kflidWordGloss); //5 //choices.Add(InterlinLineChoices.kflidWordPos); //6 //choices.Add(InterlinLineChoices.kflidFreeTrans); //7 //choices.Add(InterlinLineChoices.kflidLitTrans); //8 Assert.IsFalse(choices.OkToMoveUp(0)); // words line already at top Assert.IsTrue(choices.OkToMoveUp(1)); // morphemes Assert.IsTrue(choices.OkToMoveUp(2)); // lex entries Assert.IsTrue(choices.OkToMoveUp(3)); // lex gloss Assert.IsTrue(choices.OkToMoveUp(4)); // lex pos Assert.IsTrue(choices.OkToMoveUp(5)); // will move past whole morph bundle Assert.IsTrue(choices.OkToMoveUp(6)); Assert.IsFalse(choices.OkToMoveUp(7)); // free can't go anywhere Assert.IsTrue(choices.OkToMoveUp(8)); choices.MoveUp(4); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidLexPos, choices[3].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); choices.MoveUp(5); // Moves past whole morpheme bundle Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[1].Flid); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[2].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); // Now, the morphemes line can move up, to move the whole bundle. Assert.IsTrue(choices.OkToMoveUp(2)); // morphemes line now below word gloss. choices.MoveUp(2); // whole bundle moves. Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[5].Flid); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[1].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[2].Flid); choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); choices.MoveUp(6); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidWordPos, choices[5].Flid); Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[6].Flid); choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); choices.MoveUp(8); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidLitTrans, choices[7].Flid); Assert.AreEqual(InterlinLineChoices.kflidFreeTrans, choices[8].Flid); // Try finding some default ws values. choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); Assert.AreEqual(0, choices.Count); List <int> wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWord); Assert.AreEqual(0, wsList.Count); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWord, true); Assert.AreEqual(1, wsList.Count); Assert.AreEqual(kwsVernInPara, wsList[0]); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWordGloss); Assert.AreEqual(0, wsList.Count); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWordGloss, true); Assert.AreEqual(1, wsList.Count); Assert.AreEqual(Cache.DefaultAnalWs, wsList[0]); // Try one with another WS. choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidLexGloss); Assert.AreEqual(1, wsList.Count); Assert.AreEqual(WritingSystemServices.kwsFirstAnal, wsList[0]); choices.Add(InterlinLineChoices.kflidLexGloss, 3004); //becomes 4 (by default, after existing field with same flid) wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidLexGloss); Assert.AreEqual(2, wsList.Count); Assert.AreEqual(WritingSystemServices.kwsFirstAnal, wsList[0]); Assert.AreEqual(3004, wsList[1]); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); choices.MoveDown(4); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[5].Flid); Assert.IsTrue(choices.OkToMoveUp(5)); choices.MoveUp(5); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); Assert.AreEqual(3004, choices[4].WritingSystem); Assert.AreEqual(InterlinLineChoices.kflidLexPos, choices[5].Flid); Assert.IsTrue(choices.OkToMoveUp(5)); Assert.IsTrue(choices.OkToMoveUp(4)); choices.MoveUp(4); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[3].Flid); Assert.AreEqual(3004, choices[3].WritingSystem); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); Assert.AreEqual(WritingSystemServices.kwsFirstAnal, choices[4].WritingSystem); Assert.IsTrue(choices.OkToMoveUp(3)); // Another ws of entries can move up just as far (not past the primary // one that has the controls). choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidLexEntries); Assert.AreEqual(1, wsList.Count); Assert.AreEqual(kwsVernInPara, wsList[0]); choices.Add(InterlinLineChoices.kflidLexEntries, 3005); //becomes 3 wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidLexEntries); Assert.AreEqual(2, wsList.Count); Assert.AreEqual(kwsVernInPara, wsList[0]); Assert.AreEqual(3005, wsList[1]); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); choices.MoveDown(3); choices.MoveDown(4); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[5].Flid); Assert.IsTrue(choices.OkToMoveUp(5)); choices.MoveUp(5); Assert.IsTrue(choices.OkToMoveUp(4)); choices.MoveUp(4); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); Assert.AreEqual(3005, choices[3].WritingSystem); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); Assert.AreEqual(WritingSystemServices.kwsFirstAnal, choices[4].WritingSystem); Assert.IsTrue(choices.OkToMoveUp(3)); // not past primary LexEntry. // Another ws of morphemes can move up just under the primary one (not past the primary // one that has the controls). choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); choices.Add(InterlinLineChoices.kflidMorphemes, 3006); //becomes 2 wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidMorphemes); Assert.AreEqual(2, wsList.Count); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[2].Flid); choices.MoveDown(2); choices.MoveDown(3); choices.MoveDown(4); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[5].Flid); Assert.IsTrue(choices.OkToMoveUp(5)); choices.MoveUp(5); Assert.IsTrue(choices.OkToMoveUp(4)); choices.MoveUp(4); Assert.IsTrue(choices.OkToMoveUp(3)); choices.MoveUp(3); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[2].Flid); Assert.AreEqual(3006, choices[2].WritingSystem); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); Assert.IsTrue(choices.OkToMoveUp(2)); // not past primary morphemes. // Another ws of word starts out right after it. choices = new EditableInterlinLineChoices(m_lp, kwsVernInPara, kwsAnalysis); MakeStandardState(choices); choices.Add(InterlinLineChoices.kflidWord, 3007); //becomes 1 Assert.AreEqual(InterlinLineChoices.kflidWord, choices[1].Flid); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWord); Assert.AreEqual(2, wsList.Count); }
public void EditMoveUp() { InterlinLineChoices choices = new EditableInterlinLineChoices(0, kwsAnalysis); // To make it less confusing, here we add them in an order that does not produce // reordering. MakeStandardState(choices); //choices.Add(InterlinLineChoices.kflidWord); // 0 //choices.Add(InterlinLineChoices.kflidMorphemes); // 1 //choices.Add(InterlinLineChoices.kflidLexEntries); //2 //choices.Add(InterlinLineChoices.kflidLexGloss); //3 //choices.Add(InterlinLineChoices.kflidLexPos); //4 //choices.Add(InterlinLineChoices.kflidWordGloss); //5 //choices.Add(InterlinLineChoices.kflidWordPos); //6 //choices.Add(InterlinLineChoices.kflidFreeTrans); //7 //choices.Add(InterlinLineChoices.kflidLitTrans); //8 Assert.IsFalse(choices.OkToMoveUp(0)); // words line already at top Assert.IsTrue(choices.OkToMoveUp(1)); // morphemes Assert.IsTrue(choices.OkToMoveUp(2)); // lex entries Assert.IsTrue(choices.OkToMoveUp(3)); // lex gloss Assert.IsTrue(choices.OkToMoveUp(4)); // lex pos Assert.IsTrue(choices.OkToMoveUp(5)); // will move past whole morph bundle Assert.IsTrue(choices.OkToMoveUp(6)); Assert.IsFalse(choices.OkToMoveUp(7)); // free can't go anywhere Assert.IsTrue(choices.OkToMoveUp(8)); choices.MoveUp(4); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidLexPos, choices[3].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); choices.MoveUp(5); // Moves past whole morpheme bundle Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[1].Flid); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[2].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); // Now, the morphemes line can move up, to move the whole bundle. Assert.IsTrue(choices.OkToMoveUp(2)); // morphemes line now below word gloss. choices.MoveUp(2); // whole bundle moves. Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[5].Flid); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[1].Flid); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[2].Flid); choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); choices.MoveUp(6); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidWordPos, choices[5].Flid); Assert.AreEqual(InterlinLineChoices.kflidWordGloss, choices[6].Flid); choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); choices.MoveUp(8); // nothing complicated, two items changed place. Assert.AreEqual(InterlinLineChoices.kflidLitTrans, choices[7].Flid); Assert.AreEqual(InterlinLineChoices.kflidFreeTrans, choices[8].Flid); // Try finding some default ws values. choices = new EditableInterlinLineChoices(0, kwsAnalysis); Assert.AreEqual(0, choices.Count); List<int> wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWord); Assert.AreEqual(0, wsList.Count); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWord, true); Assert.AreEqual(1, wsList.Count); Assert.AreEqual(kwsVern, wsList[0]); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWordGloss); Assert.AreEqual(0, wsList.Count); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWordGloss, true); Assert.AreEqual(1, wsList.Count); Assert.AreEqual(kwsAnalysis, wsList[0]); // Try one with another WS. choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidLexGloss); Assert.AreEqual(1, wsList.Count); Assert.AreEqual(LangProject.kwsFirstAnal, wsList[0]); choices.Add(InterlinLineChoices.kflidLexGloss, 3004); //becomes 4 (by default, after existing field with same flid) wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidLexGloss); Assert.AreEqual(2, wsList.Count); Assert.AreEqual(LangProject.kwsFirstAnal, wsList[0]); Assert.AreEqual(3004, wsList[1]); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); choices.MoveDown(4); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[5].Flid); Assert.IsTrue(choices.OkToMoveUp(5)); choices.MoveUp(5); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); Assert.AreEqual(3004, choices[4].WritingSystem); Assert.AreEqual(InterlinLineChoices.kflidLexPos, choices[5].Flid); Assert.IsTrue(choices.OkToMoveUp(5)); Assert.IsTrue(choices.OkToMoveUp(4)); choices.MoveUp(4); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[3].Flid); Assert.AreEqual(3004, choices[3].WritingSystem); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); Assert.AreEqual((int)LangProject.kwsFirstAnal, choices[4].WritingSystem); Assert.IsTrue(choices.OkToMoveUp(3)); // Another ws of entries can move up just as far (not past the primary // one that has the controls). choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidLexEntries); Assert.AreEqual(1, wsList.Count); Assert.AreEqual(kwsVern, wsList[0]); choices.Add(InterlinLineChoices.kflidLexEntries, 3005); //becomes 3 wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidLexEntries); Assert.AreEqual(2, wsList.Count); Assert.AreEqual(kwsVern, wsList[0]); Assert.AreEqual(3005, wsList[1]); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); choices.MoveDown(3); choices.MoveDown(4); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[5].Flid); Assert.IsTrue(choices.OkToMoveUp(5)); choices.MoveUp(5); Assert.IsTrue(choices.OkToMoveUp(4)); choices.MoveUp(4); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); Assert.AreEqual(3005, choices[3].WritingSystem); Assert.AreEqual(InterlinLineChoices.kflidLexGloss, choices[4].Flid); Assert.AreEqual((int)LangProject.kwsFirstAnal, choices[4].WritingSystem); Assert.IsTrue(choices.OkToMoveUp(3)); // not past primary LexEntry. // Another ws of morphemes can move up just under the primary one (not past the primary // one that has the controls). choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); choices.Add(InterlinLineChoices.kflidMorphemes, 3006); //becomes 2 wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidMorphemes); Assert.AreEqual(2, wsList.Count); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[2].Flid); choices.MoveDown(2); choices.MoveDown(3); choices.MoveDown(4); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[5].Flid); Assert.IsTrue(choices.OkToMoveUp(5)); choices.MoveUp(5); Assert.IsTrue(choices.OkToMoveUp(4)); choices.MoveUp(4); Assert.IsTrue(choices.OkToMoveUp(3)); choices.MoveUp(3); Assert.AreEqual(InterlinLineChoices.kflidMorphemes, choices[2].Flid); Assert.AreEqual(3006, choices[2].WritingSystem); Assert.AreEqual(InterlinLineChoices.kflidLexEntries, choices[3].Flid); Assert.IsTrue(choices.OkToMoveUp(2)); // not past primary morphemes. // Another ws of word starts out right after it. choices = new EditableInterlinLineChoices(0, kwsAnalysis); MakeStandardState(choices); choices.Add(InterlinLineChoices.kflidWord, 3007); //becomes 1 Assert.AreEqual(InterlinLineChoices.kflidWord, choices[1].Flid); wsList = choices.WritingSystemsForFlid(InterlinLineChoices.kflidWord); Assert.AreEqual(2, wsList.Count); }