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 com.sun.javafx.css; 27 28 import static org.junit.Assert.assertEquals; 29 import javafx.scene.text.Font; 30 31 import org.junit.Test; 32 33 34 public class SizeTest { 35 36 public SizeTest() { 37 } 38 39 static final private double DOTS_PER_INCH = 96.0; 40 static final private double POINTS_PER_INCH = 72.0; 41 42 /** 43 * Test of points method, of class Size. 44 */ 45 @Test 46 public void testPoints() { 47 final Font font = Font.font("Amble", 16); 48 final double pixelSize = font.getSize(); 49 final double pointSize = pixelSize * (POINTS_PER_INCH / DOTS_PER_INCH); 50 51 Size instance = new Size(12.0, SizeUnits.PX); 52 double expResult = 12.0 * (POINTS_PER_INCH/DOTS_PER_INCH); 53 double result = instance.points(font); 54 assertEquals("px", expResult, result, 0.01); 55 56 instance = new Size(12.0, SizeUnits.PT); 57 expResult = 12.0; // PT is absolute 58 result = instance.points(font); 59 assertEquals("pt", expResult, result, 0.01); 60 61 instance = new Size(50.0, SizeUnits.PERCENT); 62 expResult = 0.5 * pointSize; 63 result = instance.points(pointSize, font); 64 assertEquals("%", expResult, result, 0.01); 65 66 instance = new Size(2, SizeUnits.EM); 67 expResult = 2 * pointSize; 68 result = instance.points(font); 69 assertEquals("em", expResult, result, 0.01); 70 71 instance = new Size(1.0, SizeUnits.EX); 72 expResult = 0.5 * pointSize; 73 result = instance.points(font); 74 assertEquals("ex", expResult, result, 0.01); 75 76 77 instance = new Size(1.0, SizeUnits.CM); 78 expResult = POINTS_PER_INCH/2.54; // CM is absolute (pts per inch/cm per inch) 79 result = instance.points(font); 80 assertEquals("cm", expResult, result, 0.01); 81 82 instance = new Size(1.0, SizeUnits.MM); 83 expResult = POINTS_PER_INCH/25.4; // MM is absolute (pts per inch/mm per inch) 84 result = instance.points(font); 85 assertEquals("mm", expResult, result, 0.01); 86 87 instance = new Size(1.0, SizeUnits.IN); 88 expResult = POINTS_PER_INCH; // IN is absolute (pts per inch) 89 result = instance.points(font); 90 assertEquals("in", expResult, result, 0.01); 91 92 instance = new Size(1.0, SizeUnits.PC); 93 expResult = 12.0; // PC is absolute (pts per pica) 94 result = instance.points(font); 95 assertEquals("pc", expResult, result, 0.01); 96 97 } 98 99 /** 100 * Test of pixels method, of class Size. 101 */ 102 @Test 103 public void testPixels() { 104 final Font font = Font.font("Amble", 16); 105 final double pixelSize = font.getSize(); 106 final double pointSize = pixelSize * (POINTS_PER_INCH / DOTS_PER_INCH); 107 108 Size instance = new Size(12.0, SizeUnits.PX); 109 double expResult = 12.0; 110 double result = instance.pixels(font); 111 assertEquals("px", expResult, result, 0.01); 112 113 instance = new Size(12.0, SizeUnits.PT); 114 expResult = 12.0 * (DOTS_PER_INCH / POINTS_PER_INCH); 115 result = instance.pixels(font); 116 assertEquals("pt", expResult, result, 0.01); 117 118 instance = new Size(50.0, SizeUnits.PERCENT); 119 expResult = .5 * pixelSize; 120 result = instance.pixels(pixelSize, font); 121 assertEquals("%", expResult, result, 0.01); 122 123 instance = new Size(2, SizeUnits.EM); 124 expResult = 2 * pixelSize; 125 result = instance.pixels(font); 126 assertEquals("em", expResult, result, 0.01); 127 128 instance = new Size(1.0, SizeUnits.EX); 129 expResult = .5 * pixelSize; 130 result = instance.pixels(font); 131 assertEquals("ex", expResult, result, 0.01); 132 133 instance = new Size(1.0, SizeUnits.CM); 134 // 1 cm / cm per inch 135 expResult = (1/2.54f) * DOTS_PER_INCH; 136 result = instance.pixels(font); 137 assertEquals("cm", expResult, result, 0.01); 138 139 instance = new Size(1.0, SizeUnits.MM); 140 // 1mm / mm per inch 141 expResult = (1/25.4f) * DOTS_PER_INCH; 142 result = instance.pixels(font); 143 assertEquals("mm", expResult, result, 0.01f); 144 145 instance = new Size(1.0, SizeUnits.IN); 146 expResult = DOTS_PER_INCH; 147 result = instance.pixels(font); 148 assertEquals("in", expResult, result, 0.01f); 149 150 instance = new Size(1.0, SizeUnits.PC); 151 // 1pc * 12 pt per pc yields points, then convert points to pixels 152 expResult = (1*12.0) * (DOTS_PER_INCH / POINTS_PER_INCH); 153 result = instance.pixels(1.0, font); 154 assertEquals("pc", expResult, result, 0.01f); 155 156 } 157 158 159 /** 160 * Test of sizes with angle units. 161 */ 162 @Test 163 public void testAngles() { 164 165 // 360 degrees = 2pi radians 166 // 90 degrees as radians 167 double expResult = 90; 168 169 Size instance = new Size(0.5*Math.PI, SizeUnits.RAD); 170 double result = instance.pixels(); 171 assertEquals("1/2pi rad to deg", expResult, result, 0.01); 172 173 instance = new Size(100, SizeUnits.GRAD); 174 result = instance.pixels(); 175 assertEquals("100grad to deg", expResult, result, 0.01); 176 177 instance = new Size(.25, SizeUnits.TURN); 178 result = instance.pixels(); 179 assertEquals(".25turn to deg", expResult, result, 0.01); 180 } 181 182 /** 183 * Test of sizes with time units. 184 */ 185 @Test 186 public void testTime() { 187 188 double expResult = 90; 189 190 Size instance = new Size(90, SizeUnits.S); 191 double result = instance.pixels(); 192 assertEquals("90s", expResult, result, 0.01); 193 194 instance = new Size(90, SizeUnits.MS); 195 result = instance.pixels(); 196 assertEquals("90ms", expResult, result, 0.01); 197 198 } 199 200 201 /** 202 * Test of equals method, of class Size. 203 */ 204 @Test 205 public void testEquals() { 206 Object o = new Size(2.0, SizeUnits.PX); 207 Size instance = new Size(1.0, SizeUnits.PX); 208 boolean expResult = false; 209 boolean result = instance.equals(o); 210 assertEquals(expResult, result); 211 212 o = new Size(2.0, SizeUnits.PX); 213 instance = new Size(2.0, SizeUnits.PX); 214 expResult = true; 215 result = instance.equals(o); 216 assertEquals(expResult, result); 217 218 o = new Size(2.0, SizeUnits.PT); 219 instance = new Size(2.0, SizeUnits.EM); 220 expResult = false; 221 result = instance.equals(o); 222 assertEquals(expResult, result); 223 } 224 225 /** 226 * Test of getValue method, of class Size. 227 */ 228 @Test 229 public void testGetValue() { 230 Size instance = new Size(0.0, SizeUnits.PX); 231 double expResult = 0.0; 232 double result = instance.getValue(); 233 assertEquals(expResult, result, 0.0); 234 } 235 236 /** 237 * Test of getUnits method, of class Size. 238 */ 239 @Test 240 public void testGetUnits() { 241 Size instance = new Size(0.0, SizeUnits.PX); 242 SizeUnits expResult = SizeUnits.PX; 243 SizeUnits result = instance.getUnits(); 244 assertEquals(expResult, result); 245 } 246 247 /** 248 * Test of isAbsolute method, of class Size. 249 */ 250 @Test 251 public void testIsAbsolute() { 252 Size instance = new Size(0.0, SizeUnits.EM); 253 boolean expResult = false; 254 boolean result = instance.isAbsolute(); 255 assertEquals(expResult, result); 256 257 instance = new Size(0.0, SizeUnits.PX); 258 expResult = true; 259 result = instance.isAbsolute(); 260 assertEquals(expResult, result); 261 262 } 263 264 }