1 package fvt.uno.sw.table;
2 
3 import static org.junit.Assert.*;
4 
5 import org.junit.After;
6 import org.junit.Before;
7 import org.junit.Test;
8 import org.openoffice.test.common.FileUtil;
9 import org.openoffice.test.common.Testspace;
10 import org.openoffice.test.uno.UnoApp;
11 
12 import com.sun.star.uno.UnoRuntime;
13 import com.sun.star.text.*;
14 import com.sun.star.lang.XMultiServiceFactory;
15 import com.sun.star.beans.PropertyValue;
16 import com.sun.star.beans.XPropertySet;
17 import com.sun.star.container.XIndexAccess;
18 import com.sun.star.table.*;
19 import com.sun.star.frame.XStorable;
20 
21 
22 public class TableBasic {
23 
24 	private static final UnoApp app = new UnoApp();
25 	private XTextDocument xTextDocument=null;
26 	private XMultiServiceFactory xWriterFactory=null;
27 	private XText xText=null;
28 	@Before
29 	public void setUp() throws Exception {
30 		app.start();
31 	}
32 
33 	@After
34 	public void tearDown() throws Exception {
35 		app.close();
36 	}
37   /*
38    * test create table
39    * 1.new a text document and create a table,5 rows,4 columns
40    * 2.save to odt,close it and reopen new saved document
41    * 3.check the table column count and row count
42    */
43 	@Test
44 	public void testCreateTable() throws Exception {
45 		xTextDocument =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
46 		xText=xTextDocument.getText();
47 		XTextCursor xTextCursor = xText.createTextCursor();
48 		// get internal service factory of the document
49 		xWriterFactory =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
50 		// Create a new table from the document's factory
51 		XTextTable xTable = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
52 		xTable.initialize(5, 4);
53 		xText.insertTextContent(xTextCursor,xTable,false);
54 
55 		//save and reload text document
56 		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
57 		PropertyValue[] aStoreProperties = new PropertyValue[2];
58 		aStoreProperties[0] = new PropertyValue();
59 		aStoreProperties[1] = new PropertyValue();
60 		aStoreProperties[0].Name = "Override";
61 		aStoreProperties[0].Value = true;
62 		aStoreProperties[1].Name = "FilterName";
63 		aStoreProperties[1].Value = "StarOffice XML (Writer)";
64 		xStorable.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties);
65 		app.closeDocument(xTextDocument);
66 
67 		//reopen the document and assert create table successfully
68 		XTextDocument assertDocument=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
69 		XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, assertDocument );
70 		XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTablesSupplier.getTextTables());
71 		Object xTable_obj=xIndexedTables.getByIndex(0);
72 		XTextTable xTable_Assert=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj);
73 		XTableRows xRows=xTable_Assert.getRows();
74 		assertEquals("assert inserted table has 5 rows",5, xRows.getCount());
75 		XTableColumns xColumns=xTable_Assert.getColumns();
76 		assertEquals("assert inserted table has 4 columns",4, xColumns.getCount());
77 	}
78 	/*
79 	 * test insert/delete row/column
80 	 * 1.new a text document and new a table 5x4
81 	 * 2.insert 2 rows,4 columns
82 	 * 3.check the total row count and column count
83 	 * 4.delete 3 row,2 column
84 	 * 5.check the total row count and column count
85 	 */
86 	@Test
87 	public void testInsert_Delete_Rows_Columns() throws Exception {
88 		xTextDocument =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
89 		xText=xTextDocument.getText();
90 		XTextCursor xTextCursor = xText.createTextCursor();
91 		// get internal service factory of the document
92 		xWriterFactory =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
93 		// Create a new table from the document's factory
94 		XTextTable xTable = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
95 		xTable.initialize(5, 4);
96 		xText.insertTextContent(xTextCursor,xTable,false);
97 		XTableRows xRows=xTable.getRows();
98 		XTableColumns xColumns=xTable.getColumns();
99 		xRows.insertByIndex(0, 2);
100 		xColumns.insertByIndex(3, 4);
101 		assertEquals("assert inserted 2 rows",7, xRows.getCount());
102 		assertEquals("assert inserted 2 columns",8, xColumns.getCount());
103 		xRows.removeByIndex(0, 3);
104 		xColumns.removeByIndex(3, 2);
105 		assertEquals("assert delete 3 rows",4, xRows.getCount());
106 		assertEquals("assert delete 2 columns",6, xColumns.getCount());
107 		app.closeDocument(xTextDocument);
108 	}
109 	/*
110 	 * test table tow height
111 	 * 1.new a text document and new a table
112 	 * 2.set the first row height and not auto fit
113 	 * 3.save to odt,close it and reopen new saved document
114 	 * 4.check the table first row height setting
115 	 */
116 	@Test
117 	public void testSetRowHeight() throws Exception {
118 		xTextDocument =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
119 		xText=xTextDocument.getText();
120 		XTextCursor xTextCursor = xText.createTextCursor();
121 		// get internal service factory of the document
122 		xWriterFactory =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
123 		// Create a new table from the document's factory
124 		XTextTable xTable = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
125 		xText.insertTextContent(xTextCursor,xTable,false);
126 		XTableRows xRows=xTable.getRows();
127 		//set first row not auto fit and user-defined height
128 		XPropertySet xRowsProps = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xRows.getByIndex(0));
129 		xRowsProps.setPropertyValue("IsAutoHeight",false);
130 		xRowsProps.setPropertyValue("Height",5001);
131 		//save and reload text document
132 		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
133 		PropertyValue[] aStoreProperties = new PropertyValue[2];
134 		aStoreProperties[0] = new PropertyValue();
135 		aStoreProperties[1] = new PropertyValue();
136 		aStoreProperties[0].Name = "Override";
137 		aStoreProperties[0].Value = true;
138 		aStoreProperties[1].Name = "FilterName";
139 		aStoreProperties[1].Value = "StarOffice XML (Writer)";
140 		xStorable.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties);
141 		app.closeDocument(xTextDocument);
142 
143 		//reopen the document and assert row height setting
144 		XTextDocument assertDocument=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
145 		XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, assertDocument );
146 		XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTablesSupplier.getTextTables());
147 		Object xTable_obj=xIndexedTables.getByIndex(0);
148 		XTextTable xTable_Assert=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj);
149 		XTableRows xRows_Assert=xTable_Assert.getRows();
150 		XPropertySet xRowsProps_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xRows_Assert.getByIndex(0));
151 		assertEquals("assert the second row height is 5001",5001,xRowsProps_assert.getPropertyValue("Height"));
152 		assertEquals("assert the second row height is not autofitable",false, xRowsProps_assert.getPropertyValue("IsAutoHeight"));
153 	}
154 	/*
155 	 * test table border setting
156 	 * 1.new a text document and create a table
157 	 * 2.set table border line color and style
158 	 * 3.save to odt,close it and reopen new saved document
159 	 * 4.check the table border setting
160 	 */
161 	@Test
162 	public void testSetTableBorder() throws Exception {
163 		xTextDocument =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
164 		xText=xTextDocument.getText();
165 		XTextCursor xTextCursor = xText.createTextCursor();
166 		// get internal service factory of the document
167 		xWriterFactory =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
168 		// Create a new table from the document's factory
169 		XTextTable xTable = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
170 		xText.insertTextContent(xTextCursor,xTable,false);
171 		XPropertySet xTableProps = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable);
172 		//set table border
173 		TableBorder tableBorder = new TableBorder();
174 		BorderLine[]borderLine=new BorderLine[] {new BorderLine(),new BorderLine(),new BorderLine(),new BorderLine(),new BorderLine(),new BorderLine()};
175 		borderLine[0].Color=0x00FF0000;
176 		borderLine[0].InnerLineWidth=101;
177 		borderLine[0].OuterLineWidth=19;
178 		borderLine[0].LineDistance=100;
179 		borderLine[1].Color =0x00FFFF00;
180 		borderLine[1].InnerLineWidth=101;
181 		borderLine[1].OuterLineWidth=19;
182 		borderLine[1].LineDistance=101;
183 		borderLine[2].Color =0x0000FF00;
184 		borderLine[2].InnerLineWidth=150;
185 		borderLine[2].OuterLineWidth=19;
186 		borderLine[2].LineDistance=101;
187 		borderLine[3].Color =0x0000FF00;
188 		borderLine[3].InnerLineWidth=150;
189 		borderLine[3].OuterLineWidth=19;
190 		borderLine[3].LineDistance=101;
191 		borderLine[4].Color =0x0000FF00;
192 		borderLine[4].InnerLineWidth=150;
193 		borderLine[4].OuterLineWidth=19;
194 		borderLine[4].LineDistance=101;
195 		borderLine[5].Color =0x0000FF00;
196 		borderLine[5].InnerLineWidth=150;
197 		borderLine[5].OuterLineWidth=19;
198 		borderLine[5].LineDistance=101;
199 		tableBorder.TopLine =borderLine[0];
200 		tableBorder.BottomLine =borderLine[1];
201 		tableBorder.LeftLine =borderLine[2];
202 		tableBorder.RightLine =borderLine[3];
203 		tableBorder.HorizontalLine =borderLine[4];
204 		tableBorder.VerticalLine =borderLine[5];
205 		tableBorder.IsBottomLineValid = true;
206 		tableBorder.IsLeftLineValid = true;
207 		tableBorder.IsRightLineValid = true;
208 		tableBorder.IsTopLineValid = true;
209 		tableBorder.IsHorizontalLineValid = true;
210 		tableBorder.IsVerticalLineValid = true;
211 		xTableProps.setPropertyValue("TableBorder", tableBorder);
212 		//save and reload text document
213 		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
214 		PropertyValue[] aStoreProperties = new PropertyValue[2];
215 		aStoreProperties[0] = new PropertyValue();
216 		aStoreProperties[1] = new PropertyValue();
217 		aStoreProperties[0].Name = "Override";
218 		aStoreProperties[0].Value = true;
219 		aStoreProperties[1].Name = "FilterName";
220 		aStoreProperties[1].Value = "StarOffice XML (Writer)";
221 		xStorable.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties);
222 		app.closeDocument(xTextDocument);
223 
224 		//reopen the document and assert table border setting
225 		XTextDocument assertDocument=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
226 		XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, assertDocument );
227 		XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTablesSupplier.getTextTables());
228 		Object xTable_obj=xIndexedTables.getByIndex(0);
229 		XTextTable xTable_Assert=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj);
230 		XPropertySet xTableProps_Assert = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert);
231 		TableBorder tableBorder_Assert=(TableBorder) UnoRuntime.queryInterface(TableBorder.class, xTableProps_Assert.getPropertyValue("TableBorder"));
232 		assertEquals("assert topline color as setting",0x00FF0000,tableBorder_Assert.TopLine.Color);
233 		assertEquals("assert topline innerline width as setting",101,tableBorder_Assert.TopLine.InnerLineWidth);
234 		assertEquals("assert topline outerlinewidth as setting",19,tableBorder_Assert.TopLine.OuterLineWidth);
235 		assertEquals("assert topline linedistance as setting",101,tableBorder_Assert.TopLine.LineDistance);
236 		assertEquals("assert bottomline color as setting",0x00FFFF00,tableBorder_Assert.BottomLine.Color);
237 		assertEquals("assert bottomline innerline width as setting",101,tableBorder_Assert.BottomLine.InnerLineWidth);
238 		assertEquals("assert bottomline outerlinewidth as setting",19,tableBorder_Assert.BottomLine.OuterLineWidth);
239 		assertEquals("assert bottomline linedistance as setting",101,tableBorder_Assert.BottomLine.LineDistance);
240 		assertEquals("assert leftline color as setting",0x0000FF00,tableBorder_Assert.LeftLine.Color);
241 		assertEquals("assert leftline innerline width as setting",150,tableBorder_Assert.LeftLine.InnerLineWidth);
242 		assertEquals("assert leftline outerlinewidth as setting",19,tableBorder_Assert.LeftLine.OuterLineWidth);
243 		assertEquals("assert leftline linedistance as setting",101,tableBorder_Assert.LeftLine.LineDistance);
244 		assertEquals("assert rightline color as setting",0x0000FF00,tableBorder_Assert.RightLine.Color);
245 		assertEquals("assert rightline linedistance as setting",101,tableBorder_Assert.RightLine.LineDistance);
246 		assertEquals("assert rightline innerline width as setting",150,tableBorder_Assert.RightLine.InnerLineWidth);
247 		assertEquals("assert rightline outerlinewidth as setting",19,tableBorder_Assert.RightLine.OuterLineWidth);
248 		assertEquals("assert HorizontalLine color as setting",0x0000FF00,tableBorder_Assert.HorizontalLine.Color);
249 		assertEquals("assert HorizontalLine innerline width as setting",150,tableBorder_Assert.HorizontalLine.InnerLineWidth);
250 		assertEquals("assert HorizontalLine outerlinewidth as setting",19,tableBorder_Assert.HorizontalLine.OuterLineWidth);
251 		assertEquals("assert HorizontalLine linedistance as setting",101,tableBorder_Assert.HorizontalLine.LineDistance);
252 		assertEquals("assert VerticalLine color as setting",0x0000FF00,tableBorder_Assert.VerticalLine.Color);
253 		assertEquals("assert VerticalLine innerline width as setting",150,tableBorder_Assert.VerticalLine.InnerLineWidth);
254 		assertEquals("assert VerticalLine outerlinewidth as setting",19,tableBorder_Assert.VerticalLine.OuterLineWidth);
255 		assertEquals("assert VerticalLine linedistance as setting",101,tableBorder_Assert.VerticalLine.LineDistance);
256 	}
257 	/*
258 	 * test table spacing to page and alignment
259 	 * 1.new a text document
260 	 * 2.create a table
261 	 * 3.set the table alignment to automatic,and spacing to margin
262 	 * 4.repeat step2 5 times,and set second table alignment to manual/center/left/from left/right,and spacing to margin
263 	 * 5.save to odt,close it and reopen the new saved document
264 	 * 6.reopen and check the every table alignment and spacing to margin
265 	 */
266 	@Test
267 	public void testSetTable_AlignmentAndMarginToPage() throws Exception {
268 		xTextDocument =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
269 		xText=xTextDocument.getText();
270 		XTextCursor xTextCursor = xText.createTextCursor();
271 		// get internal service factory of the document
272 		xWriterFactory =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
273 		// Create  new table from the document's factory
274 		XTextTable xTable1 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
275 		xText.insertTextContent(xTextCursor,xTable1,false);
276 		XPropertySet xTableProps1 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable1);
277 		xTableProps1.setPropertyValue("HoriOrient",com.sun.star.text.HoriOrientation.FULL);
278 		xTableProps1.setPropertyValue("LeftMargin",2591);
279 		xTableProps1.setPropertyValue("RightMargin",3000);
280 		xTableProps1.setPropertyValue("TopMargin",2000);
281 		xTableProps1.setPropertyValue("BottomMargin",2000);
282 		XTextTable xTable2 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
283 		xText.insertTextContent(xTextCursor,xTable2,false);
284 		XPropertySet xTableProps2 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable2);
285 		xTableProps2.setPropertyValue("HoriOrient",com.sun.star.text.HoriOrientation.NONE);
286 		xTableProps2.setPropertyValue("LeftMargin",2591);
287 		xTableProps2.setPropertyValue("RightMargin",3000);
288 		xTableProps2.setPropertyValue("TopMargin",2000);
289 		xTableProps2.setPropertyValue("BottomMargin",2000);
290 		XTextTable xTable3 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
291 		xText.insertTextContent(xTextCursor,xTable3,false);
292 		XPropertySet xTableProps3 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable3);
293 		xTableProps3.setPropertyValue("HoriOrient",com.sun.star.text.HoriOrientation.CENTER);
294 		xTableProps3.setPropertyValue("LeftMargin",2000);
295 		xTableProps3.setPropertyValue("RightMargin",3000);
296 		xTableProps3.setPropertyValue("TopMargin",2000);
297 		xTableProps3.setPropertyValue("BottomMargin",2000);
298 		XTextTable xTable4 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
299 		xText.insertTextContent(xTextCursor,xTable4,false);
300 		XPropertySet xTableProps4 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable4);
301 		xTableProps4.setPropertyValue("HoriOrient",com.sun.star.text.HoriOrientation.LEFT);
302 		xTableProps4.setPropertyValue("KeepTogether",true);
303 		xTableProps4.setPropertyValue("RightMargin",2000);
304 		xTableProps4.setPropertyValue("TopMargin",2000);
305 		xTableProps4.setPropertyValue("BottomMargin",2000);
306 		XTextTable xTable5 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
307 		xText.insertTextContent(xTextCursor,xTable5,false);
308 		XPropertySet xTableProps5 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable5);
309 		xTableProps5.setPropertyValue("HoriOrient",com.sun.star.text.HoriOrientation.LEFT_AND_WIDTH);
310 		xTableProps5.setPropertyValue("TopMargin",2000);
311 		xTableProps5.setPropertyValue("BottomMargin",2000);
312 		XTextTable xTable6 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
313 		xText.insertTextContent(xTextCursor,xTable6,false);
314 		XPropertySet xTableProps6 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable6);
315 		xTableProps6.setPropertyValue("HoriOrient",com.sun.star.text.HoriOrientation.RIGHT);
316 		xTableProps6.setPropertyValue("TopMargin",2000);
317 		xTableProps6.setPropertyValue("BottomMargin",2000);
318 		//save and reload text document
319 		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
320 		PropertyValue[] aStoreProperties = new PropertyValue[2];
321 		aStoreProperties[0] = new PropertyValue();
322 		aStoreProperties[1] = new PropertyValue();
323 		aStoreProperties[0].Name = "Override";
324 		aStoreProperties[0].Value = true;
325 		aStoreProperties[1].Name = "FilterName";
326 		aStoreProperties[1].Value = "StarOffice XML (Writer)";
327 		xStorable.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties);
328 		app.closeDocument(xTextDocument);
329 
330 		//reopen the document and assert table margin to page setting
331 		XTextDocument assertDocument=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
332 		XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, assertDocument );
333 		XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTablesSupplier.getTextTables());
334 		Object xTable_obj1=xIndexedTables.getByIndex(0);
335 		XTextTable xTable_Assert1=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj1);
336 		XPropertySet xTableProps_assert1 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert1);
337 		assertEquals("assert table alignment as automatic",com.sun.star.text.HoriOrientation.FULL,xTableProps_assert1.getPropertyValue("HoriOrient"));
338 		assertEquals("assert left margin to page",0,xTableProps_assert1.getPropertyValue("LeftMargin"));
339 		assertEquals("assert right margin to page",0,xTableProps_assert1.getPropertyValue("RightMargin"));
340 		assertEquals("assert top margin to page",2000,xTableProps_assert1.getPropertyValue("TopMargin"));
341 		assertEquals("assert bottom margin to page",2000,xTableProps_assert1.getPropertyValue("BottomMargin"));
342 		Object xTable_obj2=xIndexedTables.getByIndex(1);
343 		XTextTable xTable_Assert=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj2);
344 		XPropertySet xTableProps_assert2 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert);
345 		assertEquals("assert table alignment as manual",com.sun.star.text.HoriOrientation.NONE,xTableProps_assert2.getPropertyValue("HoriOrient"));
346 		assertEquals("assert left margin to page",2591,xTableProps_assert2.getPropertyValue("LeftMargin"));
347 		assertEquals("assert right margin to page",3000,xTableProps_assert2.getPropertyValue("RightMargin"));
348 		assertEquals("assert top margin to page",2000,xTableProps_assert2.getPropertyValue("TopMargin"));
349 		assertEquals("assert bottom margin to page",2000,xTableProps_assert2.getPropertyValue("BottomMargin"));
350 		Object xTable_obj3=xIndexedTables.getByIndex(2);
351 		XTextTable xTable_Assert3=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj3);
352 		XPropertySet xTableProps_assert3 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert3);
353 		assertEquals("assert table alignment as center",com.sun.star.text.HoriOrientation.CENTER,xTableProps_assert3.getPropertyValue("HoriOrient"));
354 		assertEquals("assert top margin to page",2000,xTableProps_assert3.getPropertyValue("TopMargin"));
355 		assertEquals("assert bottom margin to page",2000,xTableProps_assert3.getPropertyValue("BottomMargin"));
356 		Object xTable_obj4=xIndexedTables.getByIndex(3);
357 		XTextTable xTable_Assert4=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj4);
358 		XPropertySet xTableProps_assert4 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert4);
359 		assertEquals("assert table alignment as left",com.sun.star.text.HoriOrientation.LEFT,xTableProps_assert4.getPropertyValue("HoriOrient"));
360 		assertEquals("assert top margin to page",2000,xTableProps_assert4.getPropertyValue("TopMargin"));
361 		assertEquals("assert bottom margin to page",2000,xTableProps_assert4.getPropertyValue("BottomMargin"));
362 		Object xTable_obj5=xIndexedTables.getByIndex(4);
363 		XTextTable xTable_Assert5=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj5);
364 		XPropertySet xTableProps_assert5 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert5);
365 		assertEquals("assert table alignment as from left",com.sun.star.text.HoriOrientation.LEFT,xTableProps_assert5.getPropertyValue("HoriOrient"));
366 		assertEquals("assert top margin to page",2000,xTableProps_assert5.getPropertyValue("TopMargin"));
367 		assertEquals("assert bottom margin to page",2000,xTableProps_assert5.getPropertyValue("BottomMargin"));
368 		Object xTable_obj6=xIndexedTables.getByIndex(5);
369 		XTextTable xTable_Assert6=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj6);
370 		XPropertySet xTableProps_assert6 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert6);
371 		assertEquals("assert table alignment as right",com.sun.star.text.HoriOrientation.RIGHT,xTableProps_assert6.getPropertyValue("HoriOrient"));
372 		assertEquals("assert top margin to page",2000,xTableProps_assert5.getPropertyValue("TopMargin"));
373 		assertEquals("assert bottom margin to page",2000,xTableProps_assert5.getPropertyValue("BottomMargin"));
374 	}
375 	/*
376 	 * test set table background with color
377 	 * 1.new a text document and new a table
378 	 * 2.set table background with color
379 	 * 3.save to odt and close it,then reopen the new saved document
380 	 * 4.check the table background color
381 	 */
382 	@Test
383 	public void testSetTableBackColor() throws Exception {
384 		xTextDocument =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
385 		xText=xTextDocument.getText();
386 		XTextCursor xTextCursor = xText.createTextCursor();
387 		// get internal service factory of the document
388 		xWriterFactory =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
389 		// Create a new table from the document's factory
390 		XTextTable xTable = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
391 		xText.insertTextContent(xTextCursor,xTable,false);
392 		XPropertySet xTableProps = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable);
393 		xTableProps.setPropertyValue("BackColor",0x0000FF00);
394 
395 		//save and reload text document
396 		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
397 		PropertyValue[] aStoreProperties = new PropertyValue[2];
398 		aStoreProperties[0] = new PropertyValue();
399 		aStoreProperties[1] = new PropertyValue();
400 		aStoreProperties[0].Name = "Override";
401 		aStoreProperties[0].Value = true;
402 		aStoreProperties[1].Name = "FilterName";
403 		aStoreProperties[1].Value = "StarOffice XML (Writer)";
404 		xStorable.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties);
405 		app.closeDocument(xTextDocument);
406 
407 		//reopen the document and assert table margin to page setting
408 		XTextDocument assertDocument=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
409 		XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, assertDocument );
410 		XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTablesSupplier.getTextTables());
411 		Object xTable_obj=xIndexedTables.getByIndex(0);
412 		XTextTable xTable_Assert=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj);
413 		XPropertySet xTableProps_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert);
414 		assertEquals("verify table background color",0x0000FF00,xTableProps_assert.getPropertyValue("BackColor"));
415 	}
416 	/*test table repeat heading setting
417 	 * 1.new a text document and create a table
418 	 * 2.set table first row as repeat heading
419 	 * 3.save to odt and close it,then reopen the document
420 	 * 4.check the table first row as repeat heading
421 	 */
422 
423 	@Test
424 	public void testSetTableRepeatHeading() throws Exception {
425 		xTextDocument =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
426 		xText=xTextDocument.getText();
427 		XTextCursor xTextCursor = xText.createTextCursor();
428 		// get internal service factory of the document
429 		xWriterFactory =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
430 		// Create a new table from the document's factory
431 		XTextTable xTable = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
432 		xText.insertTextContent(xTextCursor,xTable,false);
433 		XPropertySet xTableProps = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable);
434 		//set table first one row as table heading
435 		xTableProps.setPropertyValue("RepeatHeadline",true);
436 		xTableProps.setPropertyValue("HeaderRowCount",1);
437 
438 		//save and reload text document
439 		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
440 		PropertyValue[] aStoreProperties = new PropertyValue[2];
441 		aStoreProperties[0] = new PropertyValue();
442 		aStoreProperties[1] = new PropertyValue();
443 		aStoreProperties[0].Name = "Override";
444 		aStoreProperties[0].Value = true;
445 		aStoreProperties[1].Name = "FilterName";
446 		aStoreProperties[1].Value = "StarOffice XML (Writer)";
447 		xStorable.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties);
448 		app.closeDocument(xTextDocument);
449 
450 		//reopen the document and assert table repeat heading setting
451 		XTextDocument assertDocument=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
452 		XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, assertDocument );
453 		XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTablesSupplier.getTextTables());
454 		Object xTable_obj=xIndexedTables.getByIndex(0);
455 		XTextTable xTable_Assert=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj);
456 		XPropertySet xTableProps_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert);
457 		assertEquals("verify table heading row number",1,xTableProps_assert.getPropertyValue("HeaderRowCount"));
458 		assertEquals("verify table heading repeat",true,xTableProps_assert.getPropertyValue("RepeatHeadline"));
459 	}
460 	/*
461 	 * test table shadow setting
462 	 * 1.new a text document
463 	 * 2.create 5 tables
464 	 * 3.set the 5 table shadow location to bottom_right,bottom_left,none,top_left,top_right,and shadow width
465 	 * 4.save to odt and close it,then reopen the new saved document
466 	 * 5.check the 5 table shadow location and width
467 	 */
468 	@Test
469 	public void testSetTableShadow() throws Exception {
470 		xTextDocument =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
471 		xText=xTextDocument.getText();
472 		XTextCursor xTextCursor = xText.createTextCursor();
473 		// get internal service factory of the document
474 		xWriterFactory =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
475 		// Create new table from the document's factory
476 		XTextTable xTable1 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
477 		xText.insertTextContent(xTextCursor,xTable1,false);
478 		XPropertySet xTableProps1 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable1);
479 		XTextTable xTable2 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
480 		xText.insertTextContent(xTextCursor,xTable2,false);
481 		XPropertySet xTableProps2 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable2);
482 		XTextTable xTable3 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
483 		xText.insertTextContent(xTextCursor,xTable3,false);
484 		XPropertySet xTableProps3 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable3);
485 		XTextTable xTable4 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
486 		xText.insertTextContent(xTextCursor,xTable4,false);
487 		XPropertySet xTableProps4 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable4);
488 		XTextTable xTable5 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
489 		xText.insertTextContent(xTextCursor,xTable5,false);
490 		XPropertySet xTableProps5 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable5);
491 		//set table shadow
492 		ShadowFormat[] shadowFormat=new ShadowFormat[] {new ShadowFormat(),new ShadowFormat(),new ShadowFormat(),new ShadowFormat(),new ShadowFormat()};
493 		shadowFormat[0].Location=ShadowLocation.BOTTOM_RIGHT;
494 		shadowFormat[0].ShadowWidth=100;
495 		shadowFormat[0].Color=0x00FF00FF;
496 		shadowFormat[1].Location=ShadowLocation.BOTTOM_LEFT;
497 		shadowFormat[1].ShadowWidth=100;
498 		shadowFormat[1].Color=0x00FF00FF;
499 		shadowFormat[2].Location=ShadowLocation.NONE;
500 		shadowFormat[3].Location=ShadowLocation.TOP_LEFT;
501 		shadowFormat[3].ShadowWidth=100;
502 		shadowFormat[3].Color=0x00FF00FF;
503 		shadowFormat[4].Location=ShadowLocation.TOP_RIGHT;
504 		shadowFormat[4].ShadowWidth=100;
505 		shadowFormat[4].Color=0x00FF00FF;
506 		xTableProps1.setPropertyValue("ShadowFormat",shadowFormat[0]);
507 		xTableProps2.setPropertyValue("ShadowFormat",shadowFormat[1]);
508 		xTableProps3.setPropertyValue("ShadowFormat",shadowFormat[2]);
509 		xTableProps4.setPropertyValue("ShadowFormat",shadowFormat[3]);
510 		xTableProps5.setPropertyValue("ShadowFormat",shadowFormat[4]);
511 
512 		//save and reload text document
513 		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
514 		PropertyValue[] aStoreProperties = new PropertyValue[2];
515 		aStoreProperties[0] = new PropertyValue();
516 		aStoreProperties[1] = new PropertyValue();
517 		aStoreProperties[0].Name = "Override";
518 		aStoreProperties[0].Value = true;
519 		aStoreProperties[1].Name = "FilterName";
520 		aStoreProperties[1].Value = "StarOffice XML (Writer)";
521 		xStorable.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties);
522 		app.closeDocument(xTextDocument);
523 
524 		//reopen the document and assert table shadow setting
525 		XTextDocument assertDocument=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
526 		XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, assertDocument );
527 		XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTablesSupplier.getTextTables());
528 		Object xTable_obj1=xIndexedTables.getByIndex(0);
529 		XTextTable xTable_Assert1=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj1);
530 		XPropertySet xTableProps_assert1 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert1);
531 		ShadowFormat shadowFormat_Assert1=(ShadowFormat) UnoRuntime.queryInterface(ShadowFormat.class, xTableProps_assert1.getPropertyValue("ShadowFormat"));
532 		assertEquals("assert shadow location",ShadowLocation.BOTTOM_RIGHT,shadowFormat_Assert1.Location);
533 		assertEquals("assert shadow width",100,shadowFormat_Assert1.ShadowWidth);
534 		assertEquals("assert shadow color",0x00FF00FF,shadowFormat_Assert1.Color);
535 
536 		Object xTable_obj2=xIndexedTables.getByIndex(1);
537 		XTextTable xTable_Assert2=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj2);
538 		XPropertySet xTableProps_assert2 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert2);
539 		ShadowFormat shadowFormat_Assert2=(ShadowFormat) UnoRuntime.queryInterface(ShadowFormat.class, xTableProps_assert2.getPropertyValue("ShadowFormat"));
540 		assertEquals("assert shadow location",ShadowLocation.BOTTOM_LEFT,shadowFormat_Assert2.Location);
541 		assertEquals("assert shadow width",100,shadowFormat_Assert2.ShadowWidth);
542 		assertEquals("assert shadow color",0x00FF00FF,shadowFormat_Assert2.Color);
543 
544 		Object xTable_obj3=xIndexedTables.getByIndex(2);
545 		XTextTable xTable_Assert3=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj3);
546 		XPropertySet xTableProps_assert3 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert3);
547 		ShadowFormat shadowFormat_Assert3=(ShadowFormat) UnoRuntime.queryInterface(ShadowFormat.class, xTableProps_assert3.getPropertyValue("ShadowFormat"));
548 		assertEquals("assert shadow location",ShadowLocation.NONE,shadowFormat_Assert3.Location);
549 
550 		Object xTable_obj4=xIndexedTables.getByIndex(3);
551 		XTextTable xTable_Assert4=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj4);
552 		XPropertySet xTableProps_assert4 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert4);
553 		ShadowFormat shadowFormat_Assert4=(ShadowFormat) UnoRuntime.queryInterface(ShadowFormat.class, xTableProps_assert4.getPropertyValue("ShadowFormat"));
554 		assertEquals("assert shadow location",ShadowLocation.TOP_LEFT,shadowFormat_Assert4.Location);
555 		assertEquals("assert shadow width",100,shadowFormat_Assert4.ShadowWidth);
556 		assertEquals("assert shadow color",0x00FF00FF,shadowFormat_Assert4.Color);
557 
558 		Object xTable_obj5=xIndexedTables.getByIndex(4);
559 		XTextTable xTable_Assert5=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj5);
560 		XPropertySet xTableProps_assert5 = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert5);
561 		ShadowFormat shadowFormat_Assert5=(ShadowFormat) UnoRuntime.queryInterface(ShadowFormat.class, xTableProps_assert5.getPropertyValue("ShadowFormat"));
562 		assertEquals("assert shadow location",ShadowLocation.TOP_RIGHT,shadowFormat_Assert5.Location);
563 		assertEquals("assert shadow width",100,shadowFormat_Assert5.ShadowWidth);
564 		assertEquals("assert shadow color",0x00FF00FF,shadowFormat_Assert5.Color);
565 	}
566 	/*
567 	 * test set table background with graphic
568 	 * 1.new a text document and create a table
569 	 * 2.set table background with a picture
570 	 * 3.save to odt and closet it,then reopen the new saved document
571 	 * 4.check the table background
572 	 */
573 	@Test
574 	public void testSetTableBackGraphic() throws Exception {
575 		xTextDocument =(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));
576 		xText=xTextDocument.getText();
577 		XTextCursor xTextCursor = xText.createTextCursor();
578 		// get internal service factory of the document
579 		xWriterFactory =(XMultiServiceFactory)UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
580 		// Create a new table from the document's factory
581 		XTextTable xTable1 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
582 		xText.insertTextContent(xTextCursor,xTable1,false);
583 		XPropertySet xTableProps1 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable1);
584 		xTableProps1.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
585 		xTableProps1.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
586 		xTableProps1.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.LEFT_BOTTOM);
587 
588 		XTextTable xTable2 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
589 		xText.insertTextContent(xTextCursor,xTable2,false);
590 		XPropertySet xTableProps2 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable2);
591 		xTableProps2.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
592 		xTableProps2.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
593 		xTableProps2.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.LEFT_MIDDLE);
594 
595 		XTextTable xTable3 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
596 		xText.insertTextContent(xTextCursor,xTable3,false);
597 		XPropertySet xTableProps3 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable3);
598 		xTableProps3.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
599 		xTableProps3.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
600 		xTableProps3.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.LEFT_TOP);
601 
602 		XTextTable xTable4 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
603 		xText.insertTextContent(xTextCursor,xTable4,false);
604 		XPropertySet xTableProps4 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable4);
605 		xTableProps4.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
606 		xTableProps4.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
607 		xTableProps4.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.MIDDLE_BOTTOM);
608 
609 		XTextTable xTable5 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
610 		xText.insertTextContent(xTextCursor,xTable5,false);
611 		XPropertySet xTableProps5 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable5);
612 		xTableProps5.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
613 		xTableProps5.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
614 		xTableProps5.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.MIDDLE_MIDDLE);
615 
616 		XTextTable xTable6 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
617 		xText.insertTextContent(xTextCursor,xTable6,false);
618 		XPropertySet xTableProps6 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable6);
619 		xTableProps6.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
620 		xTableProps6.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
621 		xTableProps6.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.MIDDLE_TOP);
622 
623 		XTextTable xTable7 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
624 		xText.insertTextContent(xTextCursor,xTable7,false);
625 		XPropertySet xTableProps7 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable7);
626 		xTableProps7.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
627 		xTableProps7.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
628 		xTableProps7.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.NONE);
629 
630 		XTextTable xTable8 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
631 		xText.insertTextContent(xTextCursor,xTable8,false);
632 		XPropertySet xTableProps8 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable8);
633 		xTableProps8.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
634 		xTableProps8.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
635 		xTableProps8.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.RIGHT_BOTTOM);
636 
637 		XTextTable xTable9 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
638 		xText.insertTextContent(xTextCursor,xTable9,false);
639 		XPropertySet xTableProps9 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable9);
640 		xTableProps9.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
641 		xTableProps9.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
642 		xTableProps9.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.RIGHT_MIDDLE);
643 
644 		XTextTable xTable10 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
645 		xText.insertTextContent(xTextCursor,xTable10,false);
646 		XPropertySet xTableProps10 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable10);
647 		xTableProps10.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
648 		xTableProps10.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
649 		xTableProps10.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.RIGHT_TOP);
650 
651 		XTextTable xTable11 = (XTextTable)UnoRuntime.queryInterface(XTextTable.class, xWriterFactory.createInstance("com.sun.star.text.TextTable"));
652 		xText.insertTextContent(xTextCursor,xTable11,false);
653 		XPropertySet xTableProps11 = (XPropertySet)UnoRuntime.queryInterface(XPropertySet.class, xTable11);
654 		xTableProps11.setPropertyValue("BackGraphicURL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")));
655 		xTableProps11.setPropertyValue("BackGraphicFilter","draw_jpg_Export");
656 		xTableProps11.setPropertyValue("BackGraphicLocation",com.sun.star.style.GraphicLocation.AREA);
657 		//save and reload text document
658 		XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
659 		PropertyValue[] aStoreProperties = new PropertyValue[2];
660 		aStoreProperties[0] = new PropertyValue();
661 		aStoreProperties[1] = new PropertyValue();
662 		aStoreProperties[0].Name = "Override";
663 		aStoreProperties[0].Value = true;
664 		aStoreProperties[1].Name = "FilterName";
665 		aStoreProperties[1].Value = "StarOffice XML (Writer)";
666 		xStorable.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties);
667 		app.closeDocument(xTextDocument);
668 
669 		//reopen the document and assert table margin to page setting
670 		XTextDocument assertDocument=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
671 		XTextTablesSupplier xTablesSupplier = (XTextTablesSupplier) UnoRuntime.queryInterface(XTextTablesSupplier.class, assertDocument );
672 		XIndexAccess xIndexedTables = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xTablesSupplier.getTextTables());
673 		Object xTable_obj1=xIndexedTables.getByIndex(0);
674 		XTextTable xTable_Assert1=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj1);
675 		XPropertySet xTableProps1_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert1);
676 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.LEFT_BOTTOM,xTableProps1_assert.getPropertyValue("BackGraphicLocation"));
677 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps1_assert.getPropertyValue("BackGraphicFilter"));
678 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps1_assert.getPropertyValue("BackGraphicURL"));
679 
680 		Object xTable_obj2=xIndexedTables.getByIndex(1);
681 		XTextTable xTable_Assert2=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj2);
682 		XPropertySet xTableProps2_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert2);
683 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.LEFT_MIDDLE,xTableProps2_assert.getPropertyValue("BackGraphicLocation"));
684 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps2_assert.getPropertyValue("BackGraphicFilter"));
685 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps2_assert.getPropertyValue("BackGraphicURL"));
686 
687 		Object xTable_obj3=xIndexedTables.getByIndex(2);
688 		XTextTable xTable_Assert3=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj3);
689 		XPropertySet xTableProps3_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert3);
690 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.LEFT_TOP,xTableProps3_assert.getPropertyValue("BackGraphicLocation"));
691 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps3_assert.getPropertyValue("BackGraphicFilter"));
692 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps3_assert.getPropertyValue("BackGraphicURL"));
693 
694 		Object xTable_obj4=xIndexedTables.getByIndex(3);
695 		XTextTable xTable_Assert4=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj4);
696 		XPropertySet xTableProps4_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert4);
697 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.MIDDLE_BOTTOM,xTableProps4_assert.getPropertyValue("BackGraphicLocation"));
698 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps4_assert.getPropertyValue("BackGraphicFilter"));
699 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps4_assert.getPropertyValue("BackGraphicURL"));
700 
701 		Object xTable_obj5=xIndexedTables.getByIndex(4);
702 		XTextTable xTable_Assert5=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj5);
703 		XPropertySet xTableProps5_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert5);
704 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.MIDDLE_MIDDLE,xTableProps5_assert.getPropertyValue("BackGraphicLocation"));
705 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps5_assert.getPropertyValue("BackGraphicFilter"));
706 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps5_assert.getPropertyValue("BackGraphicURL"));
707 
708 		Object xTable_obj6=xIndexedTables.getByIndex(5);
709 		XTextTable xTable_Assert6=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj6);
710 		XPropertySet xTableProps6_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert6);
711 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.MIDDLE_TOP,xTableProps6_assert.getPropertyValue("BackGraphicLocation"));
712 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps6_assert.getPropertyValue("BackGraphicFilter"));
713 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps6_assert.getPropertyValue("BackGraphicURL"));
714 
715 		Object xTable_obj7=xIndexedTables.getByIndex(6);
716 		XTextTable xTable_Assert7=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj7);
717 		XPropertySet xTableProps7_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert7);
718 		assertEquals("verify table backgraphic location is title",com.sun.star.style.GraphicLocation.NONE,xTableProps7_assert.getPropertyValue("BackGraphicLocation"));
719 
720 		Object xTable_obj8=xIndexedTables.getByIndex(7);
721 		XTextTable xTable_Assert8=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj8);
722 		XPropertySet xTableProps8_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert8);
723 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.RIGHT_BOTTOM,xTableProps8_assert.getPropertyValue("BackGraphicLocation"));
724 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps8_assert.getPropertyValue("BackGraphicFilter"));
725 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps8_assert.getPropertyValue("BackGraphicURL"));
726 
727 		Object xTable_obj9=xIndexedTables.getByIndex(8);
728 		XTextTable xTable_Assert9=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj9);
729 		XPropertySet xTableProps9_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert9);
730 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.RIGHT_MIDDLE,xTableProps9_assert.getPropertyValue("BackGraphicLocation"));
731 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps9_assert.getPropertyValue("BackGraphicFilter"));
732 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps9_assert.getPropertyValue("BackGraphicURL"));
733 
734 		Object xTable_obj10=xIndexedTables.getByIndex(9);
735 		XTextTable xTable_Assert10=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj10);
736 		XPropertySet xTableProps10_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert10);
737 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.RIGHT_TOP,xTableProps10_assert.getPropertyValue("BackGraphicLocation"));
738 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps10_assert.getPropertyValue("BackGraphicFilter"));
739 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps10_assert.getPropertyValue("BackGraphicURL"));
740 
741 		Object xTable_obj11=xIndexedTables.getByIndex(10);
742 		XTextTable xTable_Assert11=(XTextTable) UnoRuntime.queryInterface(XTextTable.class, xTable_obj11);
743 		XPropertySet xTableProps11_assert = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTable_Assert11);
744 		assertEquals("verify table backgraphic location",com.sun.star.style.GraphicLocation.AREA,xTableProps11_assert.getPropertyValue("BackGraphicLocation"));
745 		assertEquals("verify table backgraphic fileter","draw_jpg_Export",xTableProps11_assert.getPropertyValue("BackGraphicFilter"));
746 		assertEquals("verify table backgraphic URL",FileUtil.getUrl(Testspace.prepareData("uno/Desert.jpg")),xTableProps11_assert.getPropertyValue("BackGraphicURL"));
747 	}
748 }
749 
750