1 package fvt.uno.sw.paragraph;
2 
3 import static org.junit.Assert.*;
4 
5 import org.junit.After;
6 import org.junit.Before;
7 import org.junit.Ignore;
8 import org.junit.Test;
9 import org.openoffice.test.common.FileUtil;
10 import org.openoffice.test.common.Testspace;
11 import org.openoffice.test.uno.UnoApp;
12 
13 import com.sun.star.style.NumberingType;
14 import com.sun.star.text.*;
15 import com.sun.star.beans.*;
16 import com.sun.star.container.XIndexAccess;
17 import com.sun.star.container.XIndexReplace;
18 import com.sun.star.frame.XStorable;
19 import com.sun.star.lang.XMultiServiceFactory;
20 import com.sun.star.uno.UnoRuntime;
21 
22 public class ParagraphNumberingAndBullet_Numbering {
23 	private static final UnoApp app = new UnoApp();
24 	XText xText = null;
25 
26 	@Before
27 	public void setUp() throws Exception {
28 		app.start();
29 
30 	}
31 
32 	@After
33 	public void tearDown() throws Exception {
34 		app.close();
35 	}
36 	/*
37 	 * test paragraph background color
38 	 * 1.new a text document
39 	 * 2.insert some text
40 	 * 3.set paragraph numbering and bullet with numbering
41 	 * 4.save and close the document
42 	 * 5.reload the saved document and check the paragraph numbering bullet
43 	 */
44 	@Test
45 	public void testNumberingBullet_ARABIC() throws Exception {
46 
47 		XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));// new a text document
48 		xText = xTextDocument.getText();
49 		xText.setString("we are Chinese,they are American.we are all living in one earth!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!" +
50 				"Hello,world!Hello,world!");
51 		//create cursor to select paragraph and formating paragraph
52 		XTextCursor xTextCursor = xText.createTextCursor();
53 		//create paragraph property set
54 		XPropertySet xTextProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
55 		//create document service factory
56 		XMultiServiceFactory  xWriterFactory= (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
57 		//set numbering character
58 		XIndexAccess xNumRule = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class,xWriterFactory.createInstance("com.sun.star.text.NumberingRules"));
59 		PropertyValue[] propsRule = {new PropertyValue()};
60 		propsRule[0].Name = "NumberingType";
61 		propsRule[0].Value = NumberingType.ARABIC;
62 		XIndexReplace xReplaceRule = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule);
63 		xReplaceRule.replaceByIndex(0, propsRule);
64 		//set paragraph numbering and bullet character
65 		xTextProps.setPropertyValue("NumberingRules", xNumRule);
66 		//save to odt
67 		XStorable xStorable_odt = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
68 		PropertyValue[] aStoreProperties_odt = new PropertyValue[2];
69 		aStoreProperties_odt[0] = new PropertyValue();
70 		aStoreProperties_odt[1] = new PropertyValue();
71 		aStoreProperties_odt[0].Name = "Override";
72 		aStoreProperties_odt[0].Value = true;
73 		aStoreProperties_odt[1].Name = "FilterName";
74 		aStoreProperties_odt[1].Value = "writer8";
75 		xStorable_odt.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties_odt);
76 		//save to doc
77 		XStorable xStorable_doc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
78 		PropertyValue[] aStoreProperties_doc = new PropertyValue[2];
79 		aStoreProperties_doc[0] = new PropertyValue();
80 		aStoreProperties_doc[1] = new PropertyValue();
81 		aStoreProperties_doc[0].Name = "Override";
82 		aStoreProperties_doc[0].Value = true;
83 		aStoreProperties_doc[1].Name = "FilterName";
84 		aStoreProperties_doc[1].Value = "MS Word 97";
85 		xStorable_doc.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.doc")), aStoreProperties_doc);
86 		app.closeDocument(xTextDocument);
87 
88 		//reopen the document
89 		XTextDocument assertDocument_odt=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
90 		XPropertySet xCursorProps_Assert_odt = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_odt.getText().createTextCursor());
91 		XIndexAccess xNumRule_assert_odt = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_odt.getPropertyValue("NumberingRules"));
92 		XIndexReplace xReplaceRule_assert_odt = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule_assert_odt);
93 		PropertyValue[] propsRule_assert_odt=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xReplaceRule_assert_odt.getByIndex(0));
94 		//verify paragraph numbering and bullet alignment
95 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_odt[11].Name);
96 		assertEquals("assert numbering and bullet",NumberingType.ARABIC,propsRule_assert_odt[11].Value);
97 
98 		//reopen the document
99 		XTextDocument assertDocument_doc=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.doc")));
100 		XPropertySet xCursorProps_Assert_doc = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_doc.getText().createTextCursor());
101 		XIndexAccess xNumRule_assert_doc = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_doc.getPropertyValue("NumberingRules"));
102 		PropertyValue[] propsRule_assert_doc=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xNumRule_assert_doc.getByIndex(0));
103 		//verify paragraph numbering and bullet alignment
104 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_doc[11].Name);
105 		assertEquals("assert numbering and bullet",NumberingType.ARABIC,propsRule_assert_doc[11].Value);
106 	}
107 	@Test
108 	public void testNumberingBullet_ARABIC_Suffix() throws Exception {
109 
110 		XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));// new a text document
111 		xText = xTextDocument.getText();
112 		xText.setString("we are Chinese,they are American.we are all living in one earth!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!" +
113 				"Hello,world!Hello,world!");
114 		//create cursor to select paragraph and formating paragraph
115 		XTextCursor xTextCursor = xText.createTextCursor();
116 		//create paragraph property set
117 		XPropertySet xTextProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
118 		//create document service factory
119 		XMultiServiceFactory  xWriterFactory= (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
120 		//set numbering character
121 		XIndexAccess xNumRule = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class,xWriterFactory.createInstance("com.sun.star.text.NumberingRules"));
122 		PropertyValue[] propsRule = {new PropertyValue(),new PropertyValue()};
123 		propsRule[0].Name = "NumberingType";
124 		propsRule[0].Value = NumberingType.ARABIC;
125 		propsRule[1].Name = "Suffix";
126 		propsRule[1].Value = ")";
127 		XIndexReplace xReplaceRule = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule);
128 		xReplaceRule.replaceByIndex(0, propsRule);
129 		//set paragraph numbering and bullet character
130 		xTextProps.setPropertyValue("NumberingRules", xNumRule);
131 		//save to odt
132 		XStorable xStorable_odt = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
133 		PropertyValue[] aStoreProperties_odt = new PropertyValue[2];
134 		aStoreProperties_odt[0] = new PropertyValue();
135 		aStoreProperties_odt[1] = new PropertyValue();
136 		aStoreProperties_odt[0].Name = "Override";
137 		aStoreProperties_odt[0].Value = true;
138 		aStoreProperties_odt[1].Name = "FilterName";
139 		aStoreProperties_odt[1].Value = "writer8";
140 		xStorable_odt.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties_odt);
141 		//save to doc
142 		XStorable xStorable_doc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
143 		PropertyValue[] aStoreProperties_doc = new PropertyValue[2];
144 		aStoreProperties_doc[0] = new PropertyValue();
145 		aStoreProperties_doc[1] = new PropertyValue();
146 		aStoreProperties_doc[0].Name = "Override";
147 		aStoreProperties_doc[0].Value = true;
148 		aStoreProperties_doc[1].Name = "FilterName";
149 		aStoreProperties_doc[1].Value = "MS Word 97";
150 		xStorable_doc.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.doc")), aStoreProperties_doc);
151 		app.closeDocument(xTextDocument);
152 
153 		//reopen the document
154 		XTextDocument assertDocument_odt=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
155 		XPropertySet xCursorProps_Assert_odt = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_odt.getText().createTextCursor());
156 		XIndexAccess xNumRule_assert_odt = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_odt.getPropertyValue("NumberingRules"));
157 		XIndexReplace xReplaceRule_assert_odt = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule_assert_odt);
158 		PropertyValue[] propsRule_assert_odt=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xReplaceRule_assert_odt.getByIndex(0));
159 		//verify paragraph numbering and bullet alignment
160 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_odt[11].Name);
161 		assertEquals("assert numbering and bullet",NumberingType.ARABIC,propsRule_assert_odt[11].Value);
162 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_odt[3].Name);
163 		assertEquals("assert numbering and bullet",")",propsRule_assert_odt[3].Value);
164 
165 		//reopen the document
166 		XTextDocument assertDocument_doc=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.doc")));
167 		XPropertySet xCursorProps_Assert_doc = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_doc.getText().createTextCursor());
168 		XIndexAccess xNumRule_assert_doc = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_doc.getPropertyValue("NumberingRules"));
169 		PropertyValue[] propsRule_assert_doc=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xNumRule_assert_doc.getByIndex(0));
170 		//verify paragraph numbering and bullet alignment
171 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_doc[11].Name);
172 		assertEquals("assert numbering and bullet",NumberingType.ARABIC,propsRule_assert_doc[11].Value);
173 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_doc[3].Name);
174 		assertEquals("assert numbering and bullet",")",propsRule_assert_doc[3].Value);
175 	}
176 	@Test
177 	public void testNumberingBullet_ARABIC_Preffix_Suffix() throws Exception {
178 
179 		XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));// new a text document
180 		xText = xTextDocument.getText();
181 		xText.setString("we are Chinese,they are American.we are all living in one earth!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!" +
182 				"Hello,world!Hello,world!");
183 		//create cursor to select paragraph and formating paragraph
184 		XTextCursor xTextCursor = xText.createTextCursor();
185 		//create paragraph property set
186 		XPropertySet xTextProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
187 		//create document service factory
188 		XMultiServiceFactory  xWriterFactory= (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
189 		//set numbering character
190 		XIndexAccess xNumRule = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class,xWriterFactory.createInstance("com.sun.star.text.NumberingRules"));
191 		PropertyValue[] propsRule = {new PropertyValue(),new PropertyValue(),new PropertyValue()};
192 		propsRule[0].Name = "NumberingType";
193 		propsRule[0].Value = NumberingType.ARABIC;
194 		propsRule[1].Name = "Suffix";
195 		propsRule[1].Value = ")";
196 		propsRule[2].Name = "Prefix";
197 		propsRule[2].Value = "(";
198 		XIndexReplace xReplaceRule = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule);
199 		xReplaceRule.replaceByIndex(0, propsRule);
200 		//set paragraph numbering and bullet character
201 		xTextProps.setPropertyValue("NumberingRules", xNumRule);
202 		//save to odt
203 		XStorable xStorable_odt = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
204 		PropertyValue[] aStoreProperties_odt = new PropertyValue[2];
205 		aStoreProperties_odt[0] = new PropertyValue();
206 		aStoreProperties_odt[1] = new PropertyValue();
207 		aStoreProperties_odt[0].Name = "Override";
208 		aStoreProperties_odt[0].Value = true;
209 		aStoreProperties_odt[1].Name = "FilterName";
210 		aStoreProperties_odt[1].Value = "writer8";
211 		xStorable_odt.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties_odt);
212 		//save to doc
213 		XStorable xStorable_doc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
214 		PropertyValue[] aStoreProperties_doc = new PropertyValue[2];
215 		aStoreProperties_doc[0] = new PropertyValue();
216 		aStoreProperties_doc[1] = new PropertyValue();
217 		aStoreProperties_doc[0].Name = "Override";
218 		aStoreProperties_doc[0].Value = true;
219 		aStoreProperties_doc[1].Name = "FilterName";
220 		aStoreProperties_doc[1].Value = "MS Word 97";
221 		xStorable_doc.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.doc")), aStoreProperties_doc);
222 		app.closeDocument(xTextDocument);
223 
224 		//reopen the document
225 		XTextDocument assertDocument_odt=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
226 		XPropertySet xCursorProps_Assert_odt = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_odt.getText().createTextCursor());
227 		XIndexAccess xNumRule_assert_odt = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_odt.getPropertyValue("NumberingRules"));
228 		XIndexReplace xReplaceRule_assert_odt = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule_assert_odt);
229 		PropertyValue[] propsRule_assert_odt=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xReplaceRule_assert_odt.getByIndex(0));
230 		//verify paragraph numbering and bullet alignment
231 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_odt[11].Name);
232 		assertEquals("assert numbering and bullet",NumberingType.ARABIC,propsRule_assert_odt[11].Value);
233 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_odt[3].Name);
234 		assertEquals("assert numbering and bullet",")",propsRule_assert_odt[3].Value);
235 		assertEquals("assert numbering and bullet","Prefix",propsRule_assert_odt[2].Name);
236 		assertEquals("assert numbering and bullet","(",propsRule_assert_odt[2].Value);
237 
238 		//reopen the document
239 		XTextDocument assertDocument_doc=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.doc")));
240 		XPropertySet xCursorProps_Assert_doc = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_doc.getText().createTextCursor());
241 		XIndexAccess xNumRule_assert_doc = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_doc.getPropertyValue("NumberingRules"));
242 		PropertyValue[] propsRule_assert_doc=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xNumRule_assert_doc.getByIndex(0));
243 		//verify paragraph numbering and bullet alignment
244 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_doc[11].Name);
245 		assertEquals("assert numbering and bullet",NumberingType.ARABIC,propsRule_assert_doc[11].Value);
246 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_doc[3].Name);
247 		assertEquals("assert numbering and bullet",")",propsRule_assert_doc[3].Value);
248 		assertEquals("assert numbering and bullet","Prefix",propsRule_assert_odt[2].Name);
249 		assertEquals("assert numbering and bullet","(",propsRule_assert_odt[2].Value);
250 	}
251 	@Test
252 	public void testNumberingBullet_ROMAN_LOWER() throws Exception {
253 
254 		XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));// new a text document
255 		xText = xTextDocument.getText();
256 		xText.setString("we are Chinese,they are American.we are all living in one earth!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!" +
257 				"Hello,world!Hello,world!");
258 		//create cursor to select paragraph and formating paragraph
259 		XTextCursor xTextCursor = xText.createTextCursor();
260 		//create paragraph property set
261 		XPropertySet xTextProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
262 		//create document service factory
263 		XMultiServiceFactory  xWriterFactory= (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
264 		//set numbering character
265 		XIndexAccess xNumRule = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class,xWriterFactory.createInstance("com.sun.star.text.NumberingRules"));
266 		PropertyValue[] propsRule = {new PropertyValue()};
267 		propsRule[0].Name = "NumberingType";
268 		propsRule[0].Value = NumberingType.ROMAN_LOWER;
269 		XIndexReplace xReplaceRule = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule);
270 		xReplaceRule.replaceByIndex(0, propsRule);
271 		//set paragraph numbering and bullet character
272 		xTextProps.setPropertyValue("NumberingRules", xNumRule);
273 		//save to odt
274 		XStorable xStorable_odt = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
275 		PropertyValue[] aStoreProperties_odt = new PropertyValue[2];
276 		aStoreProperties_odt[0] = new PropertyValue();
277 		aStoreProperties_odt[1] = new PropertyValue();
278 		aStoreProperties_odt[0].Name = "Override";
279 		aStoreProperties_odt[0].Value = true;
280 		aStoreProperties_odt[1].Name = "FilterName";
281 		aStoreProperties_odt[1].Value = "writer8";
282 		xStorable_odt.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties_odt);
283 		//save to doc
284 		XStorable xStorable_doc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
285 		PropertyValue[] aStoreProperties_doc = new PropertyValue[2];
286 		aStoreProperties_doc[0] = new PropertyValue();
287 		aStoreProperties_doc[1] = new PropertyValue();
288 		aStoreProperties_doc[0].Name = "Override";
289 		aStoreProperties_doc[0].Value = true;
290 		aStoreProperties_doc[1].Name = "FilterName";
291 		aStoreProperties_doc[1].Value = "MS Word 97";
292 		xStorable_doc.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.doc")), aStoreProperties_doc);
293 		app.closeDocument(xTextDocument);
294 
295 		//reopen the document
296 		XTextDocument assertDocument_odt=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
297 		XPropertySet xCursorProps_Assert_odt = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_odt.getText().createTextCursor());
298 		XIndexAccess xNumRule_assert_odt = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_odt.getPropertyValue("NumberingRules"));
299 		XIndexReplace xReplaceRule_assert_odt = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule_assert_odt);
300 		PropertyValue[] propsRule_assert_odt=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xReplaceRule_assert_odt.getByIndex(0));
301 		//verify paragraph numbering and bullet alignment
302 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_odt[11].Name);
303 		assertEquals("assert numbering and bullet",NumberingType.ROMAN_LOWER,propsRule_assert_odt[11].Value);
304 
305 		//reopen the document
306 		XTextDocument assertDocument_doc=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.doc")));
307 		XPropertySet xCursorProps_Assert_doc = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_doc.getText().createTextCursor());
308 		XIndexAccess xNumRule_assert_doc = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_doc.getPropertyValue("NumberingRules"));
309 		PropertyValue[] propsRule_assert_doc=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xNumRule_assert_doc.getByIndex(0));
310 		//verify paragraph numbering and bullet alignment
311 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_doc[11].Name);
312 		assertEquals("assert numbering and bullet",NumberingType.ROMAN_LOWER,propsRule_assert_doc[11].Value);
313 	}
314 	@Test
315 	public void testNumberingBullet_ROMAN_UPPER() throws Exception {
316 
317 		XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));// new a text document
318 		xText = xTextDocument.getText();
319 		xText.setString("we are Chinese,they are American.we are all living in one earth!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!" +
320 				"Hello,world!Hello,world!");
321 		//create cursor to select paragraph and formating paragraph
322 		XTextCursor xTextCursor = xText.createTextCursor();
323 		//create paragraph property set
324 		XPropertySet xTextProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
325 		//create document service factory
326 		XMultiServiceFactory  xWriterFactory= (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
327 		//set numbering character
328 		XIndexAccess xNumRule = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class,xWriterFactory.createInstance("com.sun.star.text.NumberingRules"));
329 		PropertyValue[] propsRule = {new PropertyValue()};
330 		propsRule[0].Name = "NumberingType";
331 		propsRule[0].Value = NumberingType.ROMAN_UPPER;
332 		XIndexReplace xReplaceRule = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule);
333 		xReplaceRule.replaceByIndex(0, propsRule);
334 		//set paragraph numbering and bullet character
335 		xTextProps.setPropertyValue("NumberingRules", xNumRule);
336 		//save to odt
337 		XStorable xStorable_odt = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
338 		PropertyValue[] aStoreProperties_odt = new PropertyValue[2];
339 		aStoreProperties_odt[0] = new PropertyValue();
340 		aStoreProperties_odt[1] = new PropertyValue();
341 		aStoreProperties_odt[0].Name = "Override";
342 		aStoreProperties_odt[0].Value = true;
343 		aStoreProperties_odt[1].Name = "FilterName";
344 		aStoreProperties_odt[1].Value = "writer8";
345 		xStorable_odt.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties_odt);
346 		//save to doc
347 		XStorable xStorable_doc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
348 		PropertyValue[] aStoreProperties_doc = new PropertyValue[2];
349 		aStoreProperties_doc[0] = new PropertyValue();
350 		aStoreProperties_doc[1] = new PropertyValue();
351 		aStoreProperties_doc[0].Name = "Override";
352 		aStoreProperties_doc[0].Value = true;
353 		aStoreProperties_doc[1].Name = "FilterName";
354 		aStoreProperties_doc[1].Value = "MS Word 97";
355 		xStorable_doc.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.doc")), aStoreProperties_doc);
356 		app.closeDocument(xTextDocument);
357 
358 		//reopen the document
359 		XTextDocument assertDocument_odt=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
360 		XPropertySet xCursorProps_Assert_odt = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_odt.getText().createTextCursor());
361 		XIndexAccess xNumRule_assert_odt = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_odt.getPropertyValue("NumberingRules"));
362 		XIndexReplace xReplaceRule_assert_odt = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule_assert_odt);
363 		PropertyValue[] propsRule_assert_odt=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xReplaceRule_assert_odt.getByIndex(0));
364 		//verify paragraph numbering and bullet alignment
365 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_odt[11].Name);
366 		assertEquals("assert numbering and bullet",NumberingType.ROMAN_UPPER,propsRule_assert_odt[11].Value);
367 
368 		//reopen the document
369 		XTextDocument assertDocument_doc=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.doc")));
370 		XPropertySet xCursorProps_Assert_doc = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_doc.getText().createTextCursor());
371 		XIndexAccess xNumRule_assert_doc = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_doc.getPropertyValue("NumberingRules"));
372 		PropertyValue[] propsRule_assert_doc=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xNumRule_assert_doc.getByIndex(0));
373 		//verify paragraph numbering and bullet alignment
374 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_doc[11].Name);
375 		assertEquals("assert numbering and bullet",NumberingType.ROMAN_UPPER,propsRule_assert_doc[11].Value);
376 	}
377 	@Test@Ignore("Bug #120826 - [testUNO patch]A,B,C numbering bullet will change to A,AA,AAA when save to doc.")
378 	public void testNumberingBullet_CHARS_UPPER_LETTER() throws Exception {
379 
380 		XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));// new a text document
381 		xText = xTextDocument.getText();
382 		xText.setString("we are Chinese,they are American.we are all living in one earth!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!" +
383 				"Hello,world!Hello,world!");
384 		//create cursor to select paragraph and formating paragraph
385 		XTextCursor xTextCursor = xText.createTextCursor();
386 		//create paragraph property set
387 		XPropertySet xTextProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
388 		//create document service factory
389 		XMultiServiceFactory  xWriterFactory= (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
390 		//set numbering character
391 		XIndexAccess xNumRule = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class,xWriterFactory.createInstance("com.sun.star.text.NumberingRules"));
392 		PropertyValue[] propsRule = {new PropertyValue(),new PropertyValue()};
393 		propsRule[0].Name = "NumberingType";
394 		propsRule[0].Value = NumberingType.CHARS_UPPER_LETTER;
395 		propsRule[1].Name = "Suffix";
396 		propsRule[1].Value = ")";
397 		XIndexReplace xReplaceRule = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule);
398 		xReplaceRule.replaceByIndex(0, propsRule);
399 		//set paragraph numbering and bullet character
400 		xTextProps.setPropertyValue("NumberingRules", xNumRule);
401 		//save to odt
402 		XStorable xStorable_odt = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
403 		PropertyValue[] aStoreProperties_odt = new PropertyValue[2];
404 		aStoreProperties_odt[0] = new PropertyValue();
405 		aStoreProperties_odt[1] = new PropertyValue();
406 		aStoreProperties_odt[0].Name = "Override";
407 		aStoreProperties_odt[0].Value = true;
408 		aStoreProperties_odt[1].Name = "FilterName";
409 		aStoreProperties_odt[1].Value = "writer8";
410 		xStorable_odt.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties_odt);
411 		//save to doc
412 		XStorable xStorable_doc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
413 		PropertyValue[] aStoreProperties_doc = new PropertyValue[2];
414 		aStoreProperties_doc[0] = new PropertyValue();
415 		aStoreProperties_doc[1] = new PropertyValue();
416 		aStoreProperties_doc[0].Name = "Override";
417 		aStoreProperties_doc[0].Value = true;
418 		aStoreProperties_doc[1].Name = "FilterName";
419 		aStoreProperties_doc[1].Value = "MS Word 97";
420 		xStorable_doc.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.doc")), aStoreProperties_doc);
421 		app.closeDocument(xTextDocument);
422 
423 		//reopen the document
424 		XTextDocument assertDocument_odt=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
425 		XPropertySet xCursorProps_Assert_odt = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_odt.getText().createTextCursor());
426 		XIndexAccess xNumRule_assert_odt = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_odt.getPropertyValue("NumberingRules"));
427 		XIndexReplace xReplaceRule_assert_odt = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule_assert_odt);
428 		PropertyValue[] propsRule_assert_odt=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xReplaceRule_assert_odt.getByIndex(0));
429 		//verify paragraph numbering and bullet alignment
430 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_odt[11].Name);
431 		assertEquals("assert numbering and bullet",NumberingType.CHARS_UPPER_LETTER,propsRule_assert_odt[11].Value);
432 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_odt[3].Name);
433 		assertEquals("assert numbering and bullet",")",propsRule_assert_odt[3].Value);
434 
435 		//reopen the document
436 		XTextDocument assertDocument_doc=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.doc")));
437 		XPropertySet xCursorProps_Assert_doc = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_doc.getText().createTextCursor());
438 		XIndexAccess xNumRule_assert_doc = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_doc.getPropertyValue("NumberingRules"));
439 		PropertyValue[] propsRule_assert_doc=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xNumRule_assert_doc.getByIndex(0));
440 		//verify paragraph numbering and bullet alignment
441 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_doc[11].Name);
442 		assertEquals("assert numbering and bullet",NumberingType.CHARS_UPPER_LETTER,propsRule_assert_doc[11].Value);
443 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_doc[3].Name);
444 		assertEquals("assert numbering and bullet",")",propsRule_assert_doc[3].Value);
445 	}
446 	@Test@Ignore("Bug #120826 - [testUNO patch]A,B,C numbering bullet will change to A,AA,AAA when save to doc.")
447 	public void testNumberingBullet_CHARS_LOWER_LETTER_Suffix() throws Exception {
448 
449 		XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));// new a text document
450 		xText = xTextDocument.getText();
451 		xText.setString("we are Chinese,they are American.we are all living in one earth!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!" +
452 				"Hello,world!Hello,world!");
453 		//create cursor to select paragraph and formating paragraph
454 		XTextCursor xTextCursor = xText.createTextCursor();
455 		//create paragraph property set
456 		XPropertySet xTextProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
457 		//create document service factory
458 		XMultiServiceFactory  xWriterFactory= (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
459 		//set numbering character
460 		XIndexAccess xNumRule = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class,xWriterFactory.createInstance("com.sun.star.text.NumberingRules"));
461 		PropertyValue[] propsRule = {new PropertyValue(),new PropertyValue()};
462 		propsRule[0].Name = "NumberingType";
463 		propsRule[0].Value = NumberingType.CHARS_LOWER_LETTER;
464 		propsRule[1].Name = "Suffix";
465 		propsRule[1].Value = ")";
466 		XIndexReplace xReplaceRule = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule);
467 		xReplaceRule.replaceByIndex(0, propsRule);
468 		//set paragraph numbering and bullet character
469 		xTextProps.setPropertyValue("NumberingRules", xNumRule);
470 		//save to odt
471 		XStorable xStorable_odt = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
472 		PropertyValue[] aStoreProperties_odt = new PropertyValue[2];
473 		aStoreProperties_odt[0] = new PropertyValue();
474 		aStoreProperties_odt[1] = new PropertyValue();
475 		aStoreProperties_odt[0].Name = "Override";
476 		aStoreProperties_odt[0].Value = true;
477 		aStoreProperties_odt[1].Name = "FilterName";
478 		aStoreProperties_odt[1].Value = "writer8";
479 		xStorable_odt.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties_odt);
480 		//save to doc
481 		XStorable xStorable_doc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
482 		PropertyValue[] aStoreProperties_doc = new PropertyValue[2];
483 		aStoreProperties_doc[0] = new PropertyValue();
484 		aStoreProperties_doc[1] = new PropertyValue();
485 		aStoreProperties_doc[0].Name = "Override";
486 		aStoreProperties_doc[0].Value = true;
487 		aStoreProperties_doc[1].Name = "FilterName";
488 		aStoreProperties_doc[1].Value = "MS Word 97";
489 		xStorable_doc.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.doc")), aStoreProperties_doc);
490 		app.closeDocument(xTextDocument);
491 
492 		//reopen the document
493 		XTextDocument assertDocument_odt=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
494 		XPropertySet xCursorProps_Assert_odt = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_odt.getText().createTextCursor());
495 		XIndexAccess xNumRule_assert_odt = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_odt.getPropertyValue("NumberingRules"));
496 		XIndexReplace xReplaceRule_assert_odt = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule_assert_odt);
497 		PropertyValue[] propsRule_assert_odt=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xReplaceRule_assert_odt.getByIndex(0));
498 		//verify paragraph numbering and bullet alignment
499 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_odt[11].Name);
500 		assertEquals("assert numbering and bullet",NumberingType.CHARS_LOWER_LETTER,propsRule_assert_odt[11].Value);
501 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_odt[3].Name);
502 		assertEquals("assert numbering and bullet",")",propsRule_assert_odt[3].Value);
503 
504 		//reopen the document
505 		XTextDocument assertDocument_doc=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.doc")));
506 		XPropertySet xCursorProps_Assert_doc = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_doc.getText().createTextCursor());
507 		XIndexAccess xNumRule_assert_doc = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_doc.getPropertyValue("NumberingRules"));
508 		PropertyValue[] propsRule_assert_doc=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xNumRule_assert_doc.getByIndex(0));
509 		//verify paragraph numbering and bullet alignment
510 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_doc[11].Name);
511 		assertEquals("assert numbering and bullet",NumberingType.CHARS_LOWER_LETTER,propsRule_assert_doc[11].Value);
512 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_doc[3].Name);
513 		assertEquals("assert numbering and bullet",")",propsRule_assert_doc[3].Value);
514 	}
515 	@Test@Ignore("Bug #120826 - [testUNO patch]A,B,C numbering bullet will change to A,AA,AAA when save to doc.")
516 	public void testNumberingBullet_CHARS_LOWER_LETTER_Suffix_Prefix() throws Exception {
517 
518 		XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));// new a text document
519 		xText = xTextDocument.getText();
520 		xText.setString("we are Chinese,they are American.we are all living in one earth!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!Hello,world!" +
521 				"Hello,world!Hello,world!");
522 		//create cursor to select paragraph and formating paragraph
523 		XTextCursor xTextCursor = xText.createTextCursor();
524 		//create paragraph property set
525 		XPropertySet xTextProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
526 		//create document service factory
527 		XMultiServiceFactory  xWriterFactory= (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class, xTextDocument);
528 		//set numbering character
529 		XIndexAccess xNumRule = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class,xWriterFactory.createInstance("com.sun.star.text.NumberingRules"));
530 		PropertyValue[] propsRule = {new PropertyValue(),new PropertyValue(),new PropertyValue()};
531 		propsRule[0].Name = "NumberingType";
532 		propsRule[0].Value = NumberingType.CHARS_LOWER_LETTER;
533 		propsRule[1].Name = "Suffix";
534 		propsRule[1].Value = ")";
535 		propsRule[2].Name = "Prefix";
536 		propsRule[2].Value = "(";
537 		XIndexReplace xReplaceRule = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule);
538 		xReplaceRule.replaceByIndex(0, propsRule);
539 		//set paragraph numbering and bullet character
540 		xTextProps.setPropertyValue("NumberingRules", xNumRule);
541 		//save to odt
542 		XStorable xStorable_odt = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
543 		PropertyValue[] aStoreProperties_odt = new PropertyValue[2];
544 		aStoreProperties_odt[0] = new PropertyValue();
545 		aStoreProperties_odt[1] = new PropertyValue();
546 		aStoreProperties_odt[0].Name = "Override";
547 		aStoreProperties_odt[0].Value = true;
548 		aStoreProperties_odt[1].Name = "FilterName";
549 		aStoreProperties_odt[1].Value = "writer8";
550 		xStorable_odt.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties_odt);
551 		//save to doc
552 		XStorable xStorable_doc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
553 		PropertyValue[] aStoreProperties_doc = new PropertyValue[2];
554 		aStoreProperties_doc[0] = new PropertyValue();
555 		aStoreProperties_doc[1] = new PropertyValue();
556 		aStoreProperties_doc[0].Name = "Override";
557 		aStoreProperties_doc[0].Value = true;
558 		aStoreProperties_doc[1].Name = "FilterName";
559 		aStoreProperties_doc[1].Value = "MS Word 97";
560 		xStorable_doc.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.doc")), aStoreProperties_doc);
561 		app.closeDocument(xTextDocument);
562 
563 		//reopen the document
564 		XTextDocument assertDocument_odt=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
565 		XPropertySet xCursorProps_Assert_odt = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_odt.getText().createTextCursor());
566 		XIndexAccess xNumRule_assert_odt = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_odt.getPropertyValue("NumberingRules"));
567 		XIndexReplace xReplaceRule_assert_odt = (XIndexReplace) UnoRuntime.queryInterface(XIndexReplace.class, xNumRule_assert_odt);
568 		PropertyValue[] propsRule_assert_odt=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xReplaceRule_assert_odt.getByIndex(0));
569 		//verify paragraph numbering and bullet alignment
570 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_odt[11].Name);
571 		assertEquals("assert numbering and bullet",NumberingType.CHARS_LOWER_LETTER,propsRule_assert_odt[11].Value);
572 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_odt[3].Name);
573 		assertEquals("assert numbering and bullet",")",propsRule_assert_odt[3].Value);
574 		assertEquals("assert numbering and bullet","Prefix",propsRule_assert_odt[2].Name);
575 		assertEquals("assert numbering and bullet","(",propsRule_assert_odt[2].Value);
576 
577 		//reopen the document
578 		XTextDocument assertDocument_doc=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.doc")));
579 		XPropertySet xCursorProps_Assert_doc = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, assertDocument_doc.getText().createTextCursor());
580 		XIndexAccess xNumRule_assert_doc = (XIndexAccess) UnoRuntime.queryInterface(XIndexAccess.class, xCursorProps_Assert_doc.getPropertyValue("NumberingRules"));
581 		PropertyValue[] propsRule_assert_doc=(PropertyValue[]) UnoRuntime.queryInterface(PropertyValue[].class,xNumRule_assert_doc.getByIndex(0));
582 		//verify paragraph numbering and bullet alignment
583 		assertEquals("assert numbering and bullet","NumberingType",propsRule_assert_doc[11].Name);
584 		assertEquals("assert numbering and bullet",NumberingType.CHARS_LOWER_LETTER,propsRule_assert_doc[11].Value);
585 		assertEquals("assert numbering and bullet","Suffix",propsRule_assert_doc[3].Name);
586 		assertEquals("assert numbering and bullet",")",propsRule_assert_doc[3].Value);
587 		assertEquals("assert numbering and bullet","Prefix",propsRule_assert_doc[2].Name);
588 		assertEquals("assert numbering and bullet","(",propsRule_assert_doc[2].Value);
589 	}
590 }
591