1 package fvt.uno.sw.puretext;
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 //import org.openoffice.test.vcl.Tester.*;
13 import com.sun.star.text.*;
14 import com.sun.star.beans.*;
15 import com.sun.star.frame.XStorable;
16 import com.sun.star.uno.UnoRuntime;
17 
18 public class CharacterEmphasis {
19 	private static final UnoApp app = new UnoApp();
20 	XText xText = null;
21 
22 	@Before
23 	public void setUp() throws Exception {
24 		app.start();
25 
26 	}
27 
28 	@After
29 	public void tearDown() throws Exception {
30 		app.close();
31 	}
32 	@Test@Ignore("Bug #120657 - [testUNO patch]charmode change to disable from enable when save to doc.")
33 	public void testCharacterEmphasisSetting() throws Exception {
34 		XTextDocument xTextDocument = (XTextDocument) UnoRuntime.queryInterface(XTextDocument.class, app.newDocument("swriter"));// new a text document
35 		xText = xTextDocument.getText();
36 		xText.setString("We are Chinese,they are American. We are all living in one earth!"
37 				+ "and we all love our home very much!!!We are Chinese,they are American. " +
38 				"We are all living in one earth!We are Chinese,they are American. " +
39 				"We are all living in one earth!We are Chinese,they are American. " +
40 				"We are all living in one earth!We are Chinese,they are American. " +
41 				"We are all living in one earth!We are Chinese,they are American. " +
42 				"We are all living in one earth!We are Chinese,they are American." +
43 				" We are all living in one earth!We are Chinese,they are American. " +
44 				"We are all living in one earth!We are Chinese,they are American. " +
45 				"We are all living in one earth!We are Chinese,they are American. " +
46 				"We are all living in one earth!We are Chinese,they are American. " +
47 				"We are all living in one earth!We are Chinese,they are American. " +
48 				"We are all living in one earth!We are Chinese,they are American. " +
49 				"We are all living in one earth!We are Chinese,they are American. " +
50 				"We are all living in one earth!We are Chinese,they are American. " +
51 				"We are all living in one earth!We are Chinese,they are American. " +
52 				"We are all living in one earth!We are Chinese,they are American. " +
53 				"We are all living in one earth!We are Chinese,they are American. " +
54 				"We are all living in one earth!We are Chinese,they are American. " +
55 				"We are all living in one earth!We are all living in one earth!We are Chinese,they are American. " +
56 				"We are all living in one earth!We are all living in one earth!We are Chinese,they are American. " +
57 				"We are all living in one earth!We are all living in one earth!We are Chinese,they are American. " +
58 				"We are all living in one earth!We are all living in one earth!We are Chinese,they are American. " +
59 				"We are all living in one earth!We are all living in one earth!We are Chinese,they are American. " +
60 				"We are all living in one earth!We are all living in one earth!We are Chinese,they are American. " +
61 				"We are all living in one earth!");
62 		// create text cursor for selecting and formatting text
63 		XTextCursor xTextCursor = xText.createTextCursor();
64 		XPropertySet xCursorProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor);
65 		xTextCursor.gotoStart(false);
66 		xTextCursor.goRight((short) 100, true);
67 		xCursorProps.setPropertyValue("CharWordMode", true);
68 		xCursorProps.setPropertyValue("CharEmphasis", new Short(com.sun.star.text.FontEmphasis.ACCENT_ABOVE));
69 		xTextCursor.gotoRange(xTextCursor, false);
70 		xTextCursor.goRight((short) 100, true);
71 		xCursorProps.setPropertyValue("CharWordMode", false);
72 		xCursorProps.setPropertyValue("CharEmphasis", new Short(com.sun.star.text.FontEmphasis.ACCENT_BELOW));
73 		xTextCursor.gotoRange(xTextCursor, false);
74 		xTextCursor.goRight((short) 100, true);
75 		xCursorProps.setPropertyValue("CharWordMode", false);
76 		xCursorProps.setPropertyValue("CharEmphasis", new Short(com.sun.star.text.FontEmphasis.CIRCLE_ABOVE));
77 		xTextCursor.gotoRange(xTextCursor, false);
78 		xTextCursor.goRight((short) 100, true);
79 		xCursorProps.setPropertyValue("CharWordMode", true);
80 		xCursorProps.setPropertyValue("CharEmphasis", new Short(com.sun.star.text.FontEmphasis.CIRCLE_BELOW));
81 		xTextCursor.gotoRange(xTextCursor, false);
82 		xTextCursor.goRight((short) 100, true);
83 		xCursorProps.setPropertyValue("CharWordMode", true);
84 		xCursorProps.setPropertyValue("CharEmphasis", new Short(com.sun.star.text.FontEmphasis.DISK_ABOVE));
85 		xTextCursor.gotoRange(xTextCursor, false);
86 		xTextCursor.goRight((short) 100, true);
87 		xCursorProps.setPropertyValue("CharWordMode", false);
88 		xCursorProps.setPropertyValue("CharEmphasis", new Short(com.sun.star.text.FontEmphasis.DISK_BELOW));
89 		xTextCursor.gotoRange(xTextCursor, false);
90 		xTextCursor.goRight((short) 100, true);
91 		xCursorProps.setPropertyValue("CharWordMode", false);
92 		xCursorProps.setPropertyValue("CharEmphasis", new Short(com.sun.star.text.FontEmphasis.DOT_ABOVE));
93 		xTextCursor.gotoRange(xTextCursor, false);
94 		xTextCursor.goRight((short) 100, true);
95 		xCursorProps.setPropertyValue("CharWordMode", false);
96 		xCursorProps.setPropertyValue("CharEmphasis", new Short(com.sun.star.text.FontEmphasis.DOT_BELOW));
97 		xTextCursor.gotoRange(xTextCursor, false);
98 		xTextCursor.goRight((short) 100, true);
99 		xCursorProps.setPropertyValue("CharWordMode", false);
100 		xCursorProps.setPropertyValue("CharEmphasis", new Short(com.sun.star.text.FontEmphasis.NONE));
101 		//save to odt
102 		XStorable xStorable_odt = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
103 		PropertyValue[] aStoreProperties_odt = new PropertyValue[2];
104 		aStoreProperties_odt[0] = new PropertyValue();
105 		aStoreProperties_odt[1] = new PropertyValue();
106 		aStoreProperties_odt[0].Name = "Override";
107 		aStoreProperties_odt[0].Value = true;
108 		aStoreProperties_odt[1].Name = "FilterName";
109 		aStoreProperties_odt[1].Value = "StarOffice XML (Writer)";
110 		xStorable_odt.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.odt")), aStoreProperties_odt);
111 		//save to doc
112 		XStorable xStorable_doc = (XStorable) UnoRuntime.queryInterface(XStorable.class, xTextDocument);
113 		PropertyValue[] aStoreProperties_doc = new PropertyValue[2];
114 		aStoreProperties_doc[0] = new PropertyValue();
115 		aStoreProperties_doc[1] = new PropertyValue();
116 		aStoreProperties_doc[0].Name = "Override";
117 		aStoreProperties_doc[0].Value = true;
118 		aStoreProperties_doc[1].Name = "FilterName";
119 		aStoreProperties_doc[1].Value = "MS Word 97";
120 		xStorable_doc.storeToURL(FileUtil.getUrl(Testspace.getPath("output/test.doc")), aStoreProperties_doc);
121 		app.closeDocument(xTextDocument);
122 
123 		//reopen the document and assert character emphasis
124 		XTextDocument assertDocument_odt=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.odt")));
125 		XTextCursor xTextCursor_assert_odt = assertDocument_odt.getText().createTextCursor();
126 		XPropertySet xCursorProps_assert_odt = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor_assert_odt);
127 
128 		xTextCursor_assert_odt.gotoStart(false);
129 		xTextCursor_assert_odt.goRight((short) 100, true);
130 		assertEquals("assert individual word setting",true,xCursorProps_assert_odt.getPropertyValue("CharWordMode"));
131 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.ACCENT_ABOVE,xCursorProps_assert_odt.getPropertyValue("CharEmphasis"));
132 		xTextCursor_assert_odt.gotoRange(xTextCursor_assert_odt, false);
133 		xTextCursor_assert_odt.goRight((short) 100, true);
134 		assertEquals("assert individual word setting",false,xCursorProps_assert_odt.getPropertyValue("CharWordMode"));
135 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.ACCENT_BELOW,xCursorProps_assert_odt.getPropertyValue("CharEmphasis"));
136 		xTextCursor_assert_odt.gotoRange(xTextCursor_assert_odt, false);
137 		xTextCursor_assert_odt.goRight((short) 100, true);
138 		assertEquals("assert individual word setting",false,xCursorProps_assert_odt.getPropertyValue("CharWordMode"));
139 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.CIRCLE_ABOVE,xCursorProps_assert_odt.getPropertyValue("CharEmphasis"));
140 		xTextCursor_assert_odt.gotoRange(xTextCursor_assert_odt, false);
141 		xTextCursor_assert_odt.goRight((short) 100, true);
142 		assertEquals("assert individual word setting",true,xCursorProps_assert_odt.getPropertyValue("CharWordMode"));
143 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.CIRCLE_BELOW,xCursorProps_assert_odt.getPropertyValue("CharEmphasis"));
144 		xTextCursor_assert_odt.gotoRange(xTextCursor_assert_odt, false);
145 		xTextCursor_assert_odt.goRight((short) 100, true);
146 		assertEquals("assert individual word setting",true,xCursorProps_assert_odt.getPropertyValue("CharWordMode"));
147 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.DISK_ABOVE,xCursorProps_assert_odt.getPropertyValue("CharEmphasis"));
148 		xTextCursor_assert_odt.gotoRange(xTextCursor_assert_odt, false);
149 		xTextCursor_assert_odt.goRight((short) 100, true);
150 		assertEquals("assert individual word setting",false,xCursorProps_assert_odt.getPropertyValue("CharWordMode"));
151 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.DISK_BELOW,xCursorProps_assert_odt.getPropertyValue("CharEmphasis"));
152 		xTextCursor_assert_odt.gotoRange(xTextCursor_assert_odt, false);
153 		xTextCursor_assert_odt.goRight((short) 100, true);
154 		assertEquals("assert individual word setting",false,xCursorProps_assert_odt.getPropertyValue("CharWordMode"));
155 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.DOT_ABOVE,xCursorProps_assert_odt.getPropertyValue("CharEmphasis"));
156 		xTextCursor_assert_odt.gotoRange(xTextCursor_assert_odt, false);
157 		xTextCursor_assert_odt.goRight((short) 100, true);
158 		assertEquals("assert individual word setting",false,xCursorProps_assert_odt.getPropertyValue("CharWordMode"));
159 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.DOT_BELOW,xCursorProps_assert_odt.getPropertyValue("CharEmphasis"));
160 		xTextCursor_assert_odt.gotoRange(xTextCursor_assert_odt, false);
161 		xTextCursor_assert_odt.goRight((short) 100, true);
162 		assertEquals("assert individual word setting",false,xCursorProps_assert_odt.getPropertyValue("CharWordMode"));
163 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.NONE,xCursorProps_assert_odt.getPropertyValue("CharEmphasis"));
164 
165 		//reopen the document and assert character emphasis
166 		XTextDocument assertDocument_doc=(XTextDocument)UnoRuntime.queryInterface(XTextDocument.class, app.loadDocument(Testspace.getPath("output/test.doc")));
167 		XTextCursor xTextCursor_assert_doc = assertDocument_doc.getText().createTextCursor();
168 		XPropertySet xCursorProps_assert_doc = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class, xTextCursor_assert_doc);
169 
170 		xTextCursor_assert_doc.gotoStart(false);
171 		xTextCursor_assert_doc.goRight((short) 100, true);
172 		assertEquals("assert individual word setting",true,xCursorProps_assert_doc.getPropertyValue("CharWordMode"));
173 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.ACCENT_ABOVE,xCursorProps_assert_doc.getPropertyValue("CharEmphasis"));
174 		xTextCursor_assert_doc.gotoRange(xTextCursor_assert_doc, false);
175 		xTextCursor_assert_doc.goRight((short) 100, true);
176 		assertEquals("assert individual word setting",false,xCursorProps_assert_doc.getPropertyValue("CharWordMode"));
177 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.ACCENT_BELOW,xCursorProps_assert_doc.getPropertyValue("CharEmphasis"));
178 		xTextCursor_assert_doc.gotoRange(xTextCursor_assert_doc, false);
179 		xTextCursor_assert_doc.goRight((short) 100, true);
180 		assertEquals("assert individual word setting",false,xCursorProps_assert_doc.getPropertyValue("CharWordMode"));
181 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.CIRCLE_ABOVE,xCursorProps_assert_doc.getPropertyValue("CharEmphasis"));
182 		xTextCursor_assert_doc.gotoRange(xTextCursor_assert_doc, false);
183 		xTextCursor_assert_doc.goRight((short) 100, true);
184 		assertEquals("assert individual word setting",true,xCursorProps_assert_doc.getPropertyValue("CharWordMode"));
185 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.CIRCLE_BELOW,xCursorProps_assert_doc.getPropertyValue("CharEmphasis"));
186 		xTextCursor_assert_doc.gotoRange(xTextCursor_assert_doc, false);
187 		xTextCursor_assert_doc.goRight((short) 100, true);
188 		assertEquals("assert individual word setting",true,xCursorProps_assert_doc.getPropertyValue("CharWordMode"));
189 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.DISK_ABOVE,xCursorProps_assert_doc.getPropertyValue("CharEmphasis"));
190 		xTextCursor_assert_doc.gotoRange(xTextCursor_assert_doc, false);
191 		xTextCursor_assert_doc.goRight((short) 100, true);
192 		assertEquals("assert individual word setting",true,xCursorProps_assert_doc.getPropertyValue("CharWordMode"));
193 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.DISK_BELOW,xCursorProps_assert_doc.getPropertyValue("CharEmphasis"));
194 		xTextCursor_assert_doc.gotoRange(xTextCursor_assert_doc, false);
195 		xTextCursor_assert_doc.goRight((short) 100, true);
196 		assertEquals("assert individual word setting",true,xCursorProps_assert_doc.getPropertyValue("CharWordMode"));
197 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.DOT_ABOVE,xCursorProps_assert_doc.getPropertyValue("CharEmphasis"));
198 		xTextCursor_assert_doc.gotoRange(xTextCursor_assert_doc, false);
199 		xTextCursor_assert_doc.goRight((short) 100, true);
200 		assertEquals("assert individual word setting",true,xCursorProps_assert_doc.getPropertyValue("CharWordMode"));
201 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.DOT_BELOW,xCursorProps_assert_doc.getPropertyValue("CharEmphasis"));
202 		xTextCursor_assert_doc.gotoRange(xTextCursor_assert_doc, false);
203 		xTextCursor_assert_doc.goRight((short) 100, true);
204 		assertEquals("assert individual word setting",true,xCursorProps_assert_doc.getPropertyValue("CharWordMode"));
205 		assertEquals("assert overline",com.sun.star.text.FontEmphasis.NONE,xCursorProps_assert_doc.getPropertyValue("CharEmphasis"));
206 		}
207 }
208