You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TestText.java 8.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package org.apache.poi.hssf.usermodel;
  2. import junit.framework.TestCase;
  3. import org.apache.poi.hssf.HSSFTestDataSamples;
  4. import org.apache.poi.hssf.model.HSSFTestModelHelper;
  5. import org.apache.poi.hssf.model.TextboxShape;
  6. import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
  7. import org.apache.poi.hssf.record.ObjRecord;
  8. import org.apache.poi.hssf.record.TextObjectRecord;
  9. import java.util.Arrays;
  10. /**
  11. * @author Evgeniy Berlog
  12. * @date 25.06.12
  13. */
  14. public class TestText extends TestCase {
  15. public void testResultEqualsToAbstractShape() {
  16. HSSFWorkbook wb = new HSSFWorkbook();
  17. HSSFSheet sh = wb.createSheet();
  18. HSSFPatriarch patriarch = sh.createDrawingPatriarch();
  19. HSSFTextbox textbox = patriarch.createTextbox(new HSSFClientAnchor());
  20. TextboxShape textboxShape = HSSFTestModelHelper.createTextboxShape(0, textbox);
  21. assertEquals(textbox.getEscherContainer().getChildRecords().size(), 5);
  22. assertEquals(textboxShape.getSpContainer().getChildRecords().size(), 5);
  23. //sp record
  24. byte[] expected = textboxShape.getSpContainer().getChild(0).serialize();
  25. byte[] actual = textbox.getEscherContainer().getChild(0).serialize();
  26. assertEquals(expected.length, actual.length);
  27. assertTrue(Arrays.equals(expected, actual));
  28. expected = textboxShape.getSpContainer().getChild(2).serialize();
  29. actual = textbox.getEscherContainer().getChild(2).serialize();
  30. assertEquals(expected.length, actual.length);
  31. assertTrue(Arrays.equals(expected, actual));
  32. expected = textboxShape.getSpContainer().getChild(3).serialize();
  33. actual = textbox.getEscherContainer().getChild(3).serialize();
  34. assertEquals(expected.length, actual.length);
  35. assertTrue(Arrays.equals(expected, actual));
  36. expected = textboxShape.getSpContainer().getChild(4).serialize();
  37. actual = textbox.getEscherContainer().getChild(4).serialize();
  38. assertEquals(expected.length, actual.length);
  39. assertTrue(Arrays.equals(expected, actual));
  40. ObjRecord obj = textbox.getObjRecord();
  41. ((CommonObjectDataSubRecord) obj.getSubRecords().get(0)).setObjectId(-1024);
  42. ObjRecord objShape = textboxShape.getObjRecord();
  43. expected = obj.serialize();
  44. actual = objShape.serialize();
  45. assertEquals(expected.length, actual.length);
  46. assertTrue(Arrays.equals(expected, actual));
  47. TextObjectRecord tor = textbox.getTextObjectRecord();
  48. TextObjectRecord torShape = textboxShape.getTextObjectRecord();
  49. expected = tor.serialize();
  50. actual = torShape.serialize();
  51. assertEquals(expected.length, actual.length);
  52. assertTrue(Arrays.equals(expected, actual));
  53. }
  54. public void testAddTextToExistingFile() {
  55. HSSFWorkbook wb = new HSSFWorkbook();
  56. HSSFSheet sh = wb.createSheet();
  57. HSSFPatriarch patriarch = sh.createDrawingPatriarch();
  58. HSSFTextbox textbox = patriarch.createTextbox(new HSSFClientAnchor());
  59. textbox.setString(new HSSFRichTextString("just for test"));
  60. HSSFTextbox textbox2 = patriarch.createTextbox(new HSSFClientAnchor());
  61. textbox2.setString(new HSSFRichTextString("just for test2"));
  62. assertEquals(patriarch.getChildren().size(), 2);
  63. wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
  64. sh = wb.getSheetAt(0);
  65. patriarch = sh.getDrawingPatriarch();
  66. assertEquals(patriarch.getChildren().size(), 2);
  67. HSSFTextbox text3 = patriarch.createTextbox(new HSSFClientAnchor());
  68. text3.setString(new HSSFRichTextString("text3"));
  69. assertEquals(patriarch.getChildren().size(), 3);
  70. wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
  71. sh = wb.getSheetAt(0);
  72. patriarch = sh.getDrawingPatriarch();
  73. assertEquals(patriarch.getChildren().size(), 3);
  74. assertEquals(((HSSFTextbox) patriarch.getChildren().get(0)).getString().getString(), "just for test");
  75. assertEquals(((HSSFTextbox) patriarch.getChildren().get(1)).getString().getString(), "just for test2");
  76. assertEquals(((HSSFTextbox) patriarch.getChildren().get(2)).getString().getString(), "text3");
  77. }
  78. public void testSetGetProperties() {
  79. HSSFWorkbook wb = new HSSFWorkbook();
  80. HSSFSheet sh = wb.createSheet();
  81. HSSFPatriarch patriarch = sh.createDrawingPatriarch();
  82. HSSFTextbox textbox = patriarch.createTextbox(new HSSFClientAnchor());
  83. textbox.setString(new HSSFRichTextString("test"));
  84. assertEquals(textbox.getString().getString(), "test");
  85. textbox.setHorizontalAlignment((short) 5);
  86. assertEquals(textbox.getHorizontalAlignment(), 5);
  87. textbox.setVerticalAlignment((short) 6);
  88. assertEquals(textbox.getVerticalAlignment(), (short) 6);
  89. textbox.setMarginBottom(7);
  90. assertEquals(textbox.getMarginBottom(), 7);
  91. textbox.setMarginLeft(8);
  92. assertEquals(textbox.getMarginLeft(), 8);
  93. textbox.setMarginRight(9);
  94. assertEquals(textbox.getMarginRight(), 9);
  95. textbox.setMarginTop(10);
  96. assertEquals(textbox.getMarginTop(), 10);
  97. wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
  98. sh = wb.getSheetAt(0);
  99. patriarch = sh.getDrawingPatriarch();
  100. textbox = (HSSFTextbox) patriarch.getChildren().get(0);
  101. assertEquals(textbox.getString().getString(), "test");
  102. assertEquals(textbox.getHorizontalAlignment(), 5);
  103. assertEquals(textbox.getVerticalAlignment(), (short) 6);
  104. assertEquals(textbox.getMarginBottom(), 7);
  105. assertEquals(textbox.getMarginLeft(), 8);
  106. assertEquals(textbox.getMarginRight(), 9);
  107. assertEquals(textbox.getMarginTop(), 10);
  108. textbox.setString(new HSSFRichTextString("test1"));
  109. textbox.setHorizontalAlignment(HSSFTextbox.HORIZONTAL_ALIGNMENT_CENTERED);
  110. textbox.setVerticalAlignment(HSSFTextbox.VERTICAL_ALIGNMENT_TOP);
  111. textbox.setMarginBottom(71);
  112. textbox.setMarginLeft(81);
  113. textbox.setMarginRight(91);
  114. textbox.setMarginTop(101);
  115. assertEquals(textbox.getString().getString(), "test1");
  116. assertEquals(textbox.getHorizontalAlignment(), HSSFTextbox.HORIZONTAL_ALIGNMENT_CENTERED);
  117. assertEquals(textbox.getVerticalAlignment(), HSSFTextbox.VERTICAL_ALIGNMENT_TOP);
  118. assertEquals(textbox.getMarginBottom(), 71);
  119. assertEquals(textbox.getMarginLeft(), 81);
  120. assertEquals(textbox.getMarginRight(), 91);
  121. assertEquals(textbox.getMarginTop(), 101);
  122. wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
  123. sh = wb.getSheetAt(0);
  124. patriarch = sh.getDrawingPatriarch();
  125. textbox = (HSSFTextbox) patriarch.getChildren().get(0);
  126. assertEquals(textbox.getString().getString(), "test1");
  127. assertEquals(textbox.getHorizontalAlignment(), HSSFTextbox.HORIZONTAL_ALIGNMENT_CENTERED);
  128. assertEquals(textbox.getVerticalAlignment(), HSSFTextbox.VERTICAL_ALIGNMENT_TOP);
  129. assertEquals(textbox.getMarginBottom(), 71);
  130. assertEquals(textbox.getMarginLeft(), 81);
  131. assertEquals(textbox.getMarginRight(), 91);
  132. assertEquals(textbox.getMarginTop(), 101);
  133. }
  134. public void testExistingFileWithText(){
  135. HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("drawings.xls");
  136. HSSFSheet sheet = wb.getSheet("text");
  137. HSSFPatriarch drawing = sheet.getDrawingPatriarch();
  138. assertEquals(1, drawing.getChildren().size());
  139. HSSFTextbox textbox = (HSSFTextbox) drawing.getChildren().get(0);
  140. assertEquals(textbox.getHorizontalAlignment(), HSSFTextbox.HORIZONTAL_ALIGNMENT_LEFT);
  141. assertEquals(textbox.getVerticalAlignment(), HSSFTextbox.VERTICAL_ALIGNMENT_TOP);
  142. assertEquals(textbox.getMarginTop(), 0);
  143. assertEquals(textbox.getMarginBottom(), 3600000);
  144. assertEquals(textbox.getMarginLeft(), 3600000);
  145. assertEquals(textbox.getMarginRight(), 0);
  146. assertEquals(textbox.getString().getString(), "teeeeesssstttt");
  147. }
  148. }