Package com.google.collide.shared.document

Examples of com.google.collide.shared.document.LineInfo


  }

  public void testAssertLineOneOfUnicodeDocIsRight() {
    calculator.handleDocumentChange(fullUnicodeDocument);

    LineInfo lineOne = fullUnicodeDocument.getFirstLineInfo();
    double x = assertReversibleAndReturnX(lineOne.line(), 1);
    assertWideChars(1, 1, x);

    x = assertReversibleAndReturnX(lineOne.line(), 7);
    assertWideChars(7, 1, x);

    x = assertReversibleAndReturnX(lineOne.line(), 8);
    assertWideChars(8, 2, x);

    // Test Carriage Return
    int length = lineOne.line().length();
    x = assertReversibleAndReturnX(lineOne.line(), length - 4);
    assertWideCharsAndZeroWidthChars(length - 4, 2, 0, x);

    x = assertReversibleAndReturnXAccountingForZeroWidth(lineOne.line(), length - 3, 2);
    assertWideCharsAndZeroWidthChars(length - 3, 2, 0, x);

    x = assertReversibleAndReturnXAccountingForZeroWidth(lineOne.line(), length - 2, 1);
    assertWideCharsAndZeroWidthChars(length - 2, 2, 1, x);

    x = assertReversibleAndReturnXAccountingForZeroWidth(lineOne.line(), length - 1, 0);
    assertWideCharsAndZeroWidthChars(length - 1, 2, 2, x);
  }
View Full Code Here


  }

  public void testAssertLineTwoOfUnicodeDocIsRight() {
    calculator.handleDocumentChange(fullUnicodeDocument);

    LineInfo lineTwo = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 1);
    for (int i = 0; i < lineTwo.line().length(); i++) {
      double x = assertReversibleAndReturnX(lineTwo.line(), i);
      assertWideChars(i, i, x);
    }
  }
View Full Code Here

  }

  public void testAssertLineThreeOfUNicodeDocIsRight() {
    calculator.handleDocumentChange(fullUnicodeDocument);

    LineInfo lineThree = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 2);
    double x = assertReversibleAndReturnX(lineThree.line(), 0);
    assertEquals(0.0, x);

    for (int i = 1, j = 2; i < lineThree.line().length() - 2; i += 2, j += 2) {
      x = assertReversibleAndReturnX(lineThree.line(), i);
      assertWideChars(i, i - 1, x);

      x = assertReversibleAndReturnX(lineThree.line(), j);
      assertWideChars(j, j - 1, x);
    }

    // not dealing with \n btw
    int lastCharIndex = lineThree.line().length() - 1;
    x = assertReversibleAndReturnX(lineThree.line(), lastCharIndex);
    /*
     * so this looks funny so I'll comment it but its just convenient. it's
     * saying that given lastCharIndex column, it has 2 less widechars then its
     * column index. This makes sense because if every column before it was a
     * wide char then we'd have myIndex - 1 wide chars.
View Full Code Here

  }

  public void testAssertLineFourOfUnicodeDocIsRight() {
    calculator.handleDocumentChange(fullUnicodeDocument);

    LineInfo lineFour = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 3);
    double x = assertReversibleAndReturnX(lineFour.line(), 0);
    assertEquals(0.0, x);

    // The first character is an a + a ` combining mark
    x = assertReversibleAndReturnXAccountingForZeroWidth(lineFour.line(), 1, 1);
    assertWideCharsAndZeroWidthChars(1, 0, 0, x);
    x = assertReversibleAndReturnXAccountingForZeroWidth(lineFour.line(), 2, 0);
    assertWideCharsAndZeroWidthChars(2, 0, 1, x);

    // Test remaining characters
    x = assertReversibleAndReturnX(lineFour.line(), 3);
    assertWideCharsAndZeroWidthChars(3, 0, 1, x);
    x = assertReversibleAndReturnX(lineFour.line(), 4);
    assertWideCharsAndZeroWidthChars(4, 0, 1, x);
  }
View Full Code Here

     * This line looks like LLccLLccLL
     * NOTE: These characters all appear double wide since the test measurer
     * just blatently makes any character > 255 double wide. In realty arabic
     * characters aren't like that and present other challenges related to size.
     */
    LineInfo lineFive = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 4);
    double x = assertReversibleAndReturnX(lineFive.line(), 0);
    assertEquals(0.0, x);

    x = assertReversibleAndReturnX(lineFive.line(), 1);
    assertWideCharsAndZeroWidthChars(1, 1, 0, x);

    x = assertReversibleAndReturnXAccountingForZeroWidth(lineFive.line(), 2, 2);
    assertWideCharsAndZeroWidthChars(2, 2, 0, x);

    x = assertReversibleAndReturnXAccountingForZeroWidth(lineFive.line(), 3, 1);
    assertWideCharsAndZeroWidthChars(3, 2, 1, x);

    x = assertReversibleAndReturnX(lineFive.line(), 4);
    assertWideCharsAndZeroWidthChars(4, 2, 2, x);

    x = assertReversibleAndReturnX(lineFive.line(), 5);
    assertWideCharsAndZeroWidthChars(5, 3, 2, x);

    x = assertReversibleAndReturnXAccountingForZeroWidth(lineFive.line(), 6, 2);
    assertWideCharsAndZeroWidthChars(6, 4, 2, x);

    x = assertReversibleAndReturnXAccountingForZeroWidth(lineFive.line(), 7, 1);
    assertWideCharsAndZeroWidthChars(7, 4, 3, x);

    x = assertReversibleAndReturnX(lineFive.line(), 8);
    assertWideCharsAndZeroWidthChars(8, 4, 4, x);

    x = assertReversibleAndReturnX(lineFive.line(), 9);
    assertWideCharsAndZeroWidthChars(9, 5, 4, x);

    x = assertReversibleAndReturnX(lineFive.line(), 10);
    assertWideCharsAndZeroWidthChars(10, 6, 4, x);
  }
View Full Code Here

  public void testAssertLineSixWithMultipleCombiningMarksWorks() {
    calculator.handleDocumentChange(fullUnicodeDocument);

    // This string is a````=à
    LineInfo lineSix = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 5);
    double x = assertReversibleAndReturnX(lineSix.line(), 0);
    assertEquals(0.0, x);

    // a`
    x = assertReversibleAndReturnXAccountingForZeroWidth(lineSix.line(), 1, 4);
    assertWideCharsAndZeroWidthChars(1, 0, 0, x);

    // a``
    x = assertReversibleAndReturnXAccountingForZeroWidth(lineSix.line(), 2, 3);
    assertWideCharsAndZeroWidthChars(2, 0, 1, x);

    // a```
    x = assertReversibleAndReturnXAccountingForZeroWidth(lineSix.line(), 3, 2);
    assertWideCharsAndZeroWidthChars(3, 0, 2, x);

    // a```, if you do this I hate you
    x = assertReversibleAndReturnXAccountingForZeroWidth(lineSix.line(), 4, 1);
    assertWideCharsAndZeroWidthChars(4, 0, 3, x);

    // a````=
    x = assertReversibleAndReturnX(lineSix.line(), 5);
    assertWideCharsAndZeroWidthChars(5, 0, 4, x);

    // a````=à
    x = assertReversibleAndReturnX(lineSix.line(), 6);
    assertWideCharsAndZeroWidthChars(6, 0, 4, x);
  }
View Full Code Here

  public void testTextMutationsMarkCacheDirtyWithoutCombiningMarks() {
    calculator.handleDocumentChange(fullUnicodeDocument);

    // The second line is all katakana characters so no combining marks
    LineInfo lineTwo = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 1);

    // we want to build the cache so 'll just ask for a column at the end's x
    calculator.convertColumnToX(lineTwo.line(), lineTwo.line().length() - 1);

    // Lets perform a delete and ensure all is still working :)
    fullUnicodeDocument.deleteText(lineTwo.line(), 5, 1);
    double x = assertReversibleAndReturnX(lineTwo.line(), 4);
    assertWideChars(4, 4, x);
    x = assertReversibleAndReturnX(lineTwo.line(), 5);
    assertWideChars(5, 5, x);
    x = assertReversibleAndReturnX(lineTwo.line(), 6);
    assertWideChars(6, 6, x);

    // Lets perform a non-special insertion.
    fullUnicodeDocument.insertText(lineTwo.line(), 5, "alex");
    x = assertReversibleAndReturnX(lineTwo.line(), 4);
    assertWideChars(4, 4, x);
    x = assertReversibleAndReturnX(lineTwo.line(), 5);
    assertWideChars(5, 5, x);
    x = assertReversibleAndReturnX(lineTwo.line(), 6);
    assertWideChars(6, 5, x);
    x = assertReversibleAndReturnX(lineTwo.line(), 7);
    assertWideChars(7, 5, x);
  }
View Full Code Here

  public void testMutationsMakesNewLine() {
    calculator.handleDocumentChange(fullUnicodeDocument);

    // The second line is all katakana characters so no combining marks
    LineInfo lineInfo = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 1);

    // we want to build the cache so 'll just ask for a column at the end's x
    calculator.convertColumnToX(lineInfo.line(), lineInfo.line().length() - 1);

    // Lets perform a non-special insertion.
    fullUnicodeDocument.insertText(lineInfo.line(), 5, "al\nex");
    double x = assertReversibleAndReturnX(lineInfo.line(), 4);
    assertWideChars(4, 4, x);
    x = assertReversibleAndReturnX(lineInfo.line(), 5);
    assertWideChars(5, 5, x);
    x = assertReversibleAndReturnX(lineInfo.line(), 6);
    assertWideChars(6, 5, x);
    x = assertReversibleAndReturnX(lineInfo.line(), 7);
    assertWideChars(7, 5, x);

    // Check the new line that was created works right
    lineInfo.moveToNext();
    x = assertReversibleAndReturnX(lineInfo.line(), 1);
    assertWideChars(1, 0, x);
    x = assertReversibleAndReturnX(lineInfo.line(), 2);
    assertWideChars(2, 0, x);
    x = assertReversibleAndReturnX(lineInfo.line(), 3);
    assertWideChars(3, 1, x);
    x = assertReversibleAndReturnX(lineInfo.line(), 4);
    assertWideChars(4, 2, x);
  }
View Full Code Here

  public void testCorrectWhenMutationsAroundZeroWidthCharacters() {
    calculator.handleDocumentChange(fullUnicodeDocument);

    // We use the accented a from line three for these tests
    LineInfo lineFour = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 3);

    // we want to build the cache so I'll just ask for a column at the end's x
    calculator.convertColumnToX(lineFour.line(), lineFour.line().length() - 1);

    // delete the grave accent combining mark. cache should remove the entry
    // from a as well.
    fullUnicodeDocument.deleteText(lineFour.line(), 1, 1);

    double x = assertReversibleAndReturnX(lineFour.line(), 1);
    assertWideChars(1, 0, x);

    // We do some inserting of zero-width grave accents so we can test the
    // multi-combining mark case (the closest I can get to Arabic craziness).
    fullUnicodeDocument.insertText(lineFour.line(), 1, "\u0300\u0300\u0300");
    // rebuild cache again
    calculator.convertColumnToX(lineFour.line(), lineFour.line().length() - 1);
    // delete the last mark
    fullUnicodeDocument.deleteText(lineFour.line(), 3, 1);

    // Assert all is well, and we measure correctly
    x = assertReversibleAndReturnXAccountingForZeroWidth(lineFour.line(), 2, 1);
    assertWideCharsAndZeroWidthChars(2, 0, 1, x);
  }
View Full Code Here

  public void testConvertingXToColumn() {
    calculator.handleDocumentChange(fullUnicodeDocument);

    // All characters in this line are double-wide.
    LineInfo lineTwo = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 1);

    // we loop through skipping the \n
    for (int i = 0; i < lineTwo.line().length() - 1; i++) {
      assertXToColumn(lineTwo.line(), i, CHARACTER_SIZE * 2 * i, CHARACTER_SIZE * 2 * (i + 1));
    }

    LineInfo lineThree = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 3);
    assertXToColumn(lineThree.line(), 0, 0, CHARACTER_SIZE); // a
    // =, we bypass the ` automagically since it can't be clicked on
    assertXToColumn(lineThree.line(), 2, CHARACTER_SIZE, CHARACTER_SIZE * 2);
    // à
    assertXToColumn(lineThree.line(), 3, CHARACTER_SIZE * 2, CHARACTER_SIZE * 3);

    LineInfo lineFive = SearchTestsUtil.gotoLineInfo(fullUnicodeDocument, 5);
    assertXToColumn(lineFive.line(), 0, 0, CHARACTER_SIZE); // a
    // =, skip ````
    assertXToColumn(lineFive.line(), 5, CHARACTER_SIZE, CHARACTER_SIZE * 2);
  }
View Full Code Here

TOP

Related Classes of com.google.collide.shared.document.LineInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.