1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 package fvt.uno.sw.page;
22 
23 import static org.openoffice.test.common.Testspace.*;
24 
25 import java.io.File;
26 import java.util.Arrays;
27 import java.util.Collection;
28 
29 import org.junit.After;
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.junit.Ignore;
33 import org.junit.Assert;
34 import org.junit.runner.RunWith;
35 import org.junit.runners.Parameterized;
36 import org.junit.runners.Parameterized.Parameters;
37 
38 import org.openoffice.test.common.FileUtil;
39 import org.openoffice.test.uno.UnoApp;
40 
41 import testlib.uno.SWUtil;
42 import com.sun.star.text.XTextDocument;
43 import com.sun.star.uno.UnoRuntime;
44 import com.sun.star.lang.XComponent;
45 import com.sun.star.table.BorderLine;
46 
47 /**
48  * test page's orientation, width, height, margins
49  *
50  */
51 @RunWith(Parameterized.class)
52 public class CheckPage {
53 	UnoApp unoApp = new UnoApp();
54 	XTextDocument textDocument = null;
55 	File temp = null;
56 	String tempFilePathODT = "";
57 	String tempFilePathDOC = "";
58 
59 	private String isLandscapeProperty = "IsLandscape";
60 	private String widthProperty = "Width";
61 	private String heightProperty = "Height";
62 	private String topMarginProperty = "TopMargin";
63 	private String bottomMarginProperty = "BottomMargin";
64 	private String leftMarginProperty = "LeftMargin";
65 	private String rightMarginProperty = "RightMargin";
66 
67 	private boolean isLandscape = false;
68 	private int width = 0;
69 	private int height = 0;
70 	private int topMargin = 0;
71 	private int bottomMargin = 0;
72 	private int leftMargin = 0;
73 	private int rightMargin = 0;
74 
75 
CheckPage(boolean isLandscape, int width, int height, int topMargin, int bottomMargin, int leftMargin, int rightMargin)76 	public CheckPage(boolean isLandscape, int width, int height, int topMargin, int bottomMargin, int leftMargin, int rightMargin){
77 		this.isLandscape = isLandscape;
78 		this.width = width;
79 		this.height = height;
80 		this.topMargin = topMargin;
81 		this.bottomMargin = bottomMargin;
82 		this.leftMargin = leftMargin;
83 		this.rightMargin = rightMargin;
84 	}
85 
86 	@Parameters
data()87     public static Collection<Object[]> data(){
88     	Object[][] params = new Object[][]{
89     			{false,10000, 20000, 1000,2000, 0, 0},
90     			{false, 30000,40000, 0, 0, 100, 200},
91     			{true, 900, 10000, 0,0,0,0},
92     			{true, 20000, 30000, 300, 300, 300, 300}
93     			};
94     	return Arrays.asList(params);
95     }
96 
97     /**
98      * test page's orientation, width, height, margins
99      * @throws Exception
100      */
101 	@Test
testPage()102 	public void testPage() throws Exception
103 	{
104 		XComponent xComponent = unoApp.newDocument("swriter");
105 
106 		SWUtil.setDefaultPageStyleProperty(xComponent, isLandscapeProperty, new Boolean(this.isLandscape));
107 		SWUtil.setDefaultPageStyleProperty(xComponent, widthProperty, Integer.valueOf(this.width));
108 		SWUtil.setDefaultPageStyleProperty(xComponent, heightProperty, Integer.valueOf(this.height));
109 		SWUtil.setDefaultPageStyleProperty(xComponent, topMarginProperty, Integer.valueOf(this.topMargin));
110 		SWUtil.setDefaultPageStyleProperty(xComponent, bottomMarginProperty, Integer.valueOf(this.bottomMargin));
111 		SWUtil.setDefaultPageStyleProperty(xComponent, leftMarginProperty, Integer.valueOf(this.leftMargin));
112 		SWUtil.setDefaultPageStyleProperty(xComponent, rightMarginProperty, Integer.valueOf(this.rightMargin));
113 
114 		//save as ODT and reopen, get border
115 		unoApp.saveDocument(xComponent, tempFilePathODT);
116         unoApp.closeDocument(xComponent);
117         xComponent = unoApp.loadDocument(tempFilePathODT);
118 
119         boolean actualIsLandScape = ((Boolean)SWUtil.getDefaultPageStyleProperty(xComponent, isLandscapeProperty)).booleanValue();
120 		int actualWidth = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, widthProperty)).intValue();
121 		int actualHeight = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, heightProperty)).intValue();
122 		int actualTop = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, topMarginProperty)).intValue();
123 		int actualBottom = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, bottomMarginProperty)).intValue();
124 		int actualLeft = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, leftMarginProperty)).intValue();
125 		int actualRight = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, rightMarginProperty)).intValue();
126 
127 
128 
129 		this.compare("ODT", actualIsLandScape,actualWidth,actualHeight,actualTop,actualBottom, actualLeft,actualRight);
130 
131 		//save as DOC and reopen, get properties
132 	    SWUtil.saveAsDoc(xComponent, FileUtil.getUrl(tempFilePathDOC));
133 	    unoApp.closeDocument(xComponent);
134 	    xComponent = unoApp.loadDocument(tempFilePathDOC);
135 
136 	    actualIsLandScape = ((Boolean)SWUtil.getDefaultPageStyleProperty(xComponent, isLandscapeProperty)).booleanValue();
137 	    actualWidth = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, widthProperty)).intValue();
138 		actualHeight = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, heightProperty)).intValue();
139 		actualTop = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, topMarginProperty)).intValue();
140 		actualBottom = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, bottomMarginProperty)).intValue();
141 		actualLeft = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, leftMarginProperty)).intValue();
142 		actualRight = ((Integer)SWUtil.getDefaultPageStyleProperty(xComponent, rightMarginProperty)).intValue();
143 
144 		this.compare("DOC", actualIsLandScape,actualWidth,actualHeight,actualTop,actualBottom, actualLeft,actualRight);
145 
146 		unoApp.closeDocument(xComponent);
147 
148 	}
149 
compare(String preDescription, boolean isLandScape, int width, int height, int top, int bottom, int left, int right)150 	private void compare(String preDescription, boolean isLandScape, int width, int height, int top, int bottom, int left, int right){
151 		Assert.assertEquals(preDescription + ":" + this.isLandscapeProperty,this.isLandscape, isLandScape);
152 		Assert.assertEquals(preDescription + ":" + this.widthProperty,(double)this.width, (double)width, 2);
153 		Assert.assertEquals(preDescription + ":" + this.heightProperty,(double)this.height, (double)height, 2);
154 		Assert.assertEquals(preDescription + ":" + this.topMarginProperty,(double)this.topMargin, (double)top, 2);
155 		Assert.assertEquals(preDescription + ":" + this.bottomMarginProperty,(double)this.bottomMargin, (double)bottom, 2);
156 		Assert.assertEquals(preDescription + ":" + this.leftMarginProperty,(double)this.leftMargin, (double)left, 2);
157 		Assert.assertEquals(preDescription + ":" + this.rightMarginProperty,(double)this.rightMargin, (double)right, 2);
158 	}
159 
160 	/**
161 	 * @throws java.lang.Exception
162 	 */
163 	@Before
setUp()164 	public void setUp() throws Exception {
165 		unoApp.start();
166 
167 		FileUtil.deleteFile(getPath("temp"));
168 		temp = new File(getPath("temp"));
169 		temp.mkdirs();
170 
171 		tempFilePathODT = temp + "/tempFilePathODT.odt";
172 		tempFilePathDOC = temp + "/tempFilePathDOC.doc";
173 	}
174 
175 	@After
tearDown()176 	public void tearDown() throws Exception {
177 		unoApp.close();
178 	}
179 
180 
181 }
182