1 /* 2 * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package test.javafx.css; 27 28 import javafx.css.Size; 29 import javafx.css.SizeShim; 30 import javafx.css.SizeUnits; 31 import static org.junit.Assert.assertEquals; 32 import javafx.scene.text.Font; 33 34 import org.junit.Test; 35 36 37 public class SizeTest { 38 39 public SizeTest() { 40 } 41 42 static final private double DOTS_PER_INCH = 96.0; 43 static final private double POINTS_PER_INCH = 72.0; 44 45 /** 46 * Test of points method, of class Size. 47 */ 48 @Test 49 public void testPoints() { 50 final Font font = Font.font("Amble", 16); 51 final double pixelSize = font.getSize(); 52 final double pointSize = pixelSize * (POINTS_PER_INCH / DOTS_PER_INCH); 53 54 Size instance = new Size(12.0, SizeUnits.PX); 55 double expResult = 12.0 * (POINTS_PER_INCH/DOTS_PER_INCH); 56 double result = SizeShim.points(instance, font); 57 assertEquals("px", expResult, result, 0.01); 58 59 instance = new Size(12.0, SizeUnits.PT); 60 expResult = 12.0; // PT is absolute 61 result = SizeShim.points(instance, font); 62 assertEquals("pt", expResult, result, 0.01); 63 64 instance = new Size(50.0, SizeUnits.PERCENT); 65 expResult = 0.5 * pointSize; 66 result = SizeShim.points(instance, pointSize, font); 67 assertEquals("%", expResult, result, 0.01); 68 69 instance = new Size(2, SizeUnits.EM); 70 expResult = 2 * pointSize; 71 result = SizeShim.points(instance, font); 72 assertEquals("em", expResult, result, 0.01); 73 74 instance = new Size(1.0, SizeUnits.EX); 75 expResult = 0.5 * pointSize; 76 result = SizeShim.points(instance, font); 77 assertEquals("ex", expResult, result, 0.01); 78 79 80 instance = new Size(1.0, SizeUnits.CM); 81 expResult = POINTS_PER_INCH/2.54; // CM is absolute (pts per inch/cm per inch) 82 result = SizeShim.points(instance, font); 83 assertEquals("cm", expResult, result, 0.01); 84 85 instance = new Size(1.0, SizeUnits.MM); 86 expResult = POINTS_PER_INCH/25.4; // MM is absolute (pts per inch/mm per inch) 87 result = SizeShim.points(instance, font); 88 assertEquals("mm", expResult, result, 0.01); 89 90 instance = new Size(1.0, SizeUnits.IN); 91 expResult = POINTS_PER_INCH; // IN is absolute (pts per inch) 92 result = SizeShim.points(instance, font); 93 assertEquals("in", expResult, result, 0.01); 94 95 instance = new Size(1.0, SizeUnits.PC); 96 expResult = 12.0; // PC is absolute (pts per pica) 97 result = SizeShim.points(instance, font); 98 assertEquals("pc", expResult, result, 0.01); 99 100 } 101 102 /** 103 * Test of pixels method, of class Size. 104 */ 105 @Test 106 public void testPixels() { 107 final Font font = Font.font("Amble", 16); 108 final double pixelSize = font.getSize(); 109 final double pointSize = pixelSize * (POINTS_PER_INCH / DOTS_PER_INCH); 110 111 Size instance = new Size(12.0, SizeUnits.PX); 112 double expResult = 12.0; 113 double result = instance.pixels(font); 114 assertEquals("px", expResult, result, 0.01); 115 116 instance = new Size(12.0, SizeUnits.PT); 117 expResult = 12.0 * (DOTS_PER_INCH / POINTS_PER_INCH); 118 result = instance.pixels(font); 119 assertEquals("pt", expResult, result, 0.01); 120 121 instance = new Size(50.0, SizeUnits.PERCENT); 122 expResult = .5 * pixelSize; 123 result = instance.pixels(pixelSize, font); 124 assertEquals("%", expResult, result, 0.01); 125 126 instance = new Size(2, SizeUnits.EM); 127 expResult = 2 * pixelSize; 128 result = instance.pixels(font); 129 assertEquals("em", expResult, result, 0.01); 130 131 instance = new Size(1.0, SizeUnits.EX); 132 expResult = .5 * pixelSize; 133 result = instance.pixels(font); 134 assertEquals("ex", expResult, result, 0.01); 135 136 instance = new Size(1.0, SizeUnits.CM); 137 // 1 cm / cm per inch 138 expResult = (1/2.54f) * DOTS_PER_INCH; 139 result = instance.pixels(font); 140 assertEquals("cm", expResult, result, 0.01); 141 142 instance = new Size(1.0, SizeUnits.MM); 143 // 1mm / mm per inch 144 expResult = (1/25.4f) * DOTS_PER_INCH; 145 result = instance.pixels(font); 146 assertEquals("mm", expResult, result, 0.01f); 147 148 instance = new Size(1.0, SizeUnits.IN); 149 expResult = DOTS_PER_INCH; 150 result = instance.pixels(font); 151 assertEquals("in", expResult, result, 0.01f); 152 153 instance = new Size(1.0, SizeUnits.PC); 154 // 1pc * 12 pt per pc yields points, then convert points to pixels 155 expResult = (1*12.0) * (DOTS_PER_INCH / POINTS_PER_INCH); 156 result = instance.pixels(1.0, font); 157 assertEquals("pc", expResult, result, 0.01f); 158 159 } 160 161 162 /** 163 * Test of sizes with angle units. 164 */ 165 @Test 166 public void testAngles() { 167 168 // 360 degrees = 2pi radians 169 // 90 degrees as radians 170 double expResult = 90; 171 172 Size instance = new Size(0.5*Math.PI, SizeUnits.RAD); 173 double result = instance.pixels(); 174 assertEquals("1/2pi rad to deg", expResult, result, 0.01); 175 176 instance = new Size(100, SizeUnits.GRAD); 177 result = instance.pixels(); 178 assertEquals("100grad to deg", expResult, result, 0.01); 179 180 instance = new Size(.25, SizeUnits.TURN); 181 result = instance.pixels(); 182 assertEquals(".25turn to deg", expResult, result, 0.01); 183 } 184 185 /** 186 * Test of sizes with time units. 187 */ 188 @Test 189 public void testTime() { 190 191 double expResult = 90; 192 193 Size instance = new Size(90, SizeUnits.S); 194 double result = instance.pixels(); 195 assertEquals("90s", expResult, result, 0.01); 196 197 instance = new Size(90, SizeUnits.MS); 198 result = instance.pixels(); 199 assertEquals("90ms", expResult, result, 0.01); 200 201 } 202 203 204 /** 205 * Test of equals method, of class Size. 206 */ 207 @Test 208 public void testEquals() { 209 Object o = new Size(2.0, SizeUnits.PX); 210 Size instance = new Size(1.0, SizeUnits.PX); 211 boolean expResult = false; 212 boolean result = instance.equals(o); 213 assertEquals(expResult, result); 214 215 o = new Size(2.0, SizeUnits.PX); 216 instance = new Size(2.0, SizeUnits.PX); 217 expResult = true; 218 result = instance.equals(o); 219 assertEquals(expResult, result); 220 221 o = new Size(2.0, SizeUnits.PT); 222 instance = new Size(2.0, SizeUnits.EM); 223 expResult = false; 224 result = instance.equals(o); 225 assertEquals(expResult, result); 226 } 227 228 /** 229 * Test of getValue method, of class Size. 230 */ 231 @Test 232 public void testGetValue() { 233 Size instance = new Size(0.0, SizeUnits.PX); 234 double expResult = 0.0; 235 double result = instance.getValue(); 236 assertEquals(expResult, result, 0.0); 237 } 238 239 /** 240 * Test of getUnits method, of class Size. 241 */ 242 @Test 243 public void testGetUnits() { 244 Size instance = new Size(0.0, SizeUnits.PX); 245 SizeUnits expResult = SizeUnits.PX; 246 SizeUnits result = instance.getUnits(); 247 assertEquals(expResult, result); 248 } 249 250 /** 251 * Test of isAbsolute method, of class Size. 252 */ 253 @Test 254 public void testIsAbsolute() { 255 Size instance = new Size(0.0, SizeUnits.EM); 256 boolean expResult = false; 257 boolean result = instance.isAbsolute(); 258 assertEquals(expResult, result); 259 260 instance = new Size(0.0, SizeUnits.PX); 261 expResult = true; 262 result = instance.isAbsolute(); 263 assertEquals(expResult, result); 264 265 } 266 267 }