You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

299 lines
9.0 KiB

/*
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers.
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file.
*/
package org.jetbrains.compose.web.core.tests
import org.jetbrains.compose.web.css.ch
import org.jetbrains.compose.web.css.cm
import org.jetbrains.compose.web.css.cssRem
import org.jetbrains.compose.web.css.deg
import org.jetbrains.compose.web.css.div
import org.jetbrains.compose.web.css.dpcm
import org.jetbrains.compose.web.css.dpi
import org.jetbrains.compose.web.css.dppx
import org.jetbrains.compose.web.css.em
import org.jetbrains.compose.web.css.fr
import org.jetbrains.compose.web.css.grad
import org.jetbrains.compose.web.css.minus
import org.jetbrains.compose.web.css.mm
import org.jetbrains.compose.web.css.ms
import org.jetbrains.compose.web.css.number
import org.jetbrains.compose.web.css.pc
import org.jetbrains.compose.web.css.percent
import org.jetbrains.compose.web.css.plus
import org.jetbrains.compose.web.css.pt
import org.jetbrains.compose.web.css.px
import org.jetbrains.compose.web.css.rad
import org.jetbrains.compose.web.css.s
import org.jetbrains.compose.web.css.times
import org.jetbrains.compose.web.css.turn
import org.jetbrains.compose.web.css.vh
import org.jetbrains.compose.web.css.vmax
import org.jetbrains.compose.web.css.vmin
import org.jetbrains.compose.web.css.vw
import kotlin.test.Test
import kotlin.test.assertEquals
class CSSUnitApiTests {
// TODO: Cover CSS.Q, CSS.khz and CSS.hz after we'll get rid from polyfill
@Test
fun postfixInvocation() {
// TODO: review what exactly number does - most likely we don't need it in our ecosystem
assertEquals("4number", 4.number.asString())
assertEquals("4%", 4.percent.asString())
assertEquals("4em", 4.em.asString())
assertEquals("4ch", 4.ch.asString())
assertEquals("4rem", 4.cssRem.asString())
assertEquals("4vw", 4.vw.asString())
assertEquals("4vh", 4.vh.asString())
assertEquals("4vmin", 4.vmin.asString())
assertEquals("4vmax", 4.vmax.asString())
assertEquals("4cm", 4.cm.asString())
assertEquals("4mm", 4.mm.asString())
assertEquals("4pt", 4.pt.asString())
assertEquals("4pc", 4.pc.asString())
assertEquals("4px", 4.px.asString())
assertEquals("4deg", 4.deg.asString())
assertEquals("4grad", 4.grad.asString())
assertEquals("4rad", 4.rad.asString())
assertEquals("4turn", 4.turn.asString())
assertEquals("4s", 4.s.asString())
assertEquals("4ms", 4.ms.asString())
assertEquals("4dpi", 4.dpi.asString())
assertEquals("4dpcm", 4.dpcm.asString())
assertEquals("4dppx", 4.dppx.asString())
assertEquals("4fr", 4.fr.asString())
}
@Test
fun id() {
// TODO: review what exactly number does - most likely we don't need it in our ecosystem
assertEquals(4.number, 4.number)
assertEquals(4.percent, 4.percent)
assertEquals(4.em, 4.em)
assertEquals(4.ch, 4.ch)
assertEquals(4.cssRem, 4.cssRem)
assertEquals(4.vw, 4.vw)
assertEquals(4.vh, 4.vh)
assertEquals(4.vmin, 4.vmin)
assertEquals(4.vmax, 4.vmax)
assertEquals(4.cm, 4.cm)
assertEquals(4.mm, 4.mm)
assertEquals(4.pt, 4.pt)
assertEquals(4.pc, 4.pc)
assertEquals(4.px, 4.px)
assertEquals(4.deg, 4.deg)
assertEquals(4.grad, 4.grad)
assertEquals(4.rad, 4.rad)
assertEquals(4.turn, 4.turn)
assertEquals(4.s, 4.s)
assertEquals(4.ms, 4.ms)
assertEquals(4.dpi, 4.dpi)
assertEquals(4.dpcm, 4.dpcm)
assertEquals(4.dppx, 4.dppx)
assertEquals(4.fr, 4.fr)
}
@Test
fun arithmeticMultiplicationLeft() {
assertEquals(16.percent, 4.percent * 4)
assertEquals(16.em, 4.em * 4)
assertEquals(16.ch, 4.ch * 4)
assertEquals(16.cssRem, 4.cssRem * 4)
assertEquals(16.vw, 4.vw * 4)
assertEquals(16.vh, 4.vh * 4)
assertEquals(16.vmin, 4.vmin * 4)
assertEquals(16.vmax, 4.vmax * 4)
assertEquals(16.cm, 4.cm * 4)
assertEquals(16.mm, 4.mm * 4)
assertEquals(16.pt, 4.pt * 4)
assertEquals(16.pc, 4.pc * 4)
assertEquals(16.px, 4.px * 4)
assertEquals(16.deg, 4.deg * 4)
assertEquals(16.grad, 4.grad * 4)
assertEquals(16.rad, 4.rad * 4)
assertEquals(16.turn, 4.turn * 4)
assertEquals(16.s, 4.s * 4)
assertEquals(16.ms, 4.ms * 4)
assertEquals(16.dpi, 4.dpi * 4)
assertEquals(16.dpcm, 4.dpcm * 4)
assertEquals(16.dppx, 4.dppx * 4)
assertEquals(16.fr, 4.fr * 4)
}
@Test
fun arithmeticDivisionLeft() {
assertEquals(1.percent, 4.percent / 4)
assertEquals(1.em, 4.em / 4)
assertEquals(1.ch, 4.ch / 4)
assertEquals(1.cssRem, 4.cssRem / 4)
assertEquals(1.vw, 4.vw / 4)
assertEquals(1.vh, 4.vh / 4)
assertEquals(1.vmin, 4.vmin / 4)
assertEquals(1.vmax, 4.vmax / 4)
assertEquals(1.cm, 4.cm / 4)
assertEquals(1.mm, 4.mm / 4)
assertEquals(1.pt, 4.pt / 4)
assertEquals(1.pc, 4.pc / 4)
assertEquals(1.px, 4.px / 4)
assertEquals(1.deg, 4.deg / 4)
assertEquals(1.grad, 4.grad / 4)
assertEquals(1.rad, 4.rad / 4)
assertEquals(1.turn, 4.turn / 4)
assertEquals(1.s, 4.s / 4)
assertEquals(1.ms, 4.ms / 4)
assertEquals(1.dpi, 4.dpi / 4)
assertEquals(1.dpcm, 4.dpcm / 4)
assertEquals(1.dppx, 4.dppx / 4)
assertEquals(1.fr, 4.fr / 4)
}
@Test
fun arithmeticMultiplicationRight() {
assertEquals(12.percent, 3 * 4.percent)
assertEquals(12.em, 3 * 4.em)
assertEquals(12.ch, 3 * 4.ch)
assertEquals(12.cssRem, 3 * 4.cssRem)
assertEquals(12.vw, 3 * 4.vw)
assertEquals(12.vh, 3 * 4.vh)
assertEquals(12.vmin, 3 * 4.vmin)
assertEquals(12.vmax, 3 * 4.vmax)
assertEquals(12.cm, 3 * 4.cm)
assertEquals(12.mm, 3 * 4.mm)
assertEquals(12.pt, 3 * 4.pt)
assertEquals(12.pc, 3 * 4.pc)
assertEquals(12.px, 3 * 4.px)
assertEquals(12.deg, 3 * 4.deg)
assertEquals(12.grad, 3 * 4.grad)
assertEquals(12.rad, 3 * 4.rad)
assertEquals(12.turn, 3 * 4.turn)
assertEquals(12.s, 3 * 4.s)
assertEquals(12.ms, 3 * 4.ms)
assertEquals(12.dpi, 3 * 4.dpi)
assertEquals(12.dpcm, 3 * 4.dpcm)
assertEquals(12.dppx, 3 * 4.dppx)
assertEquals(12.fr, 3 * 4.fr)
}
@Test
fun addHomogenous() {
assertEquals(13.percent, 7.percent + 4.percent + 2.percent)
assertEquals(13.em, 7.em + 4.em + 2.em)
assertEquals(13.ch, 7.ch + 4.ch + 2.ch)
assertEquals(13.cssRem, 7.cssRem + 4.cssRem + 2.cssRem)
assertEquals(13.vw, 7.vw + 4.vw + 2.vw)
assertEquals(13.vh, 7.vh + 4.vh + 2.vh)
assertEquals(13.vmin, 7.vmin + 4.vmin + 2.vmin)
assertEquals(13.vmax, 7.vmax + 4.vmax + 2.vmax)
assertEquals(13.cm, 7.cm + 4.cm + 2.cm)
assertEquals(13.mm, 7.mm + 4.mm + 2.mm)
assertEquals(13.pt, 7.pt + 4.pt + 2.pt)
assertEquals(13.pc, 7.pc + 4.pc + 2.pc)
assertEquals(13.px, 7.px + 4.px + 2.px)
assertEquals(13.deg, 7.deg + 4.deg + 2.deg)
assertEquals(13.grad, 7.grad + 4.grad + 2.grad)
assertEquals(13.rad, 7.rad + 4.rad + 2.rad)
assertEquals(13.turn, 7.turn + 4.turn + 2.turn)
assertEquals(13.s, 7.s + 4.s + 2.s)
assertEquals(13.ms, 7.ms + 4.ms + 2.ms)
assertEquals(13.dpi, 7.dpi + 4.dpi + 2.dpi)
assertEquals(13.dpcm, 7.dpcm + 4.dpcm + 2.dpcm)
assertEquals(13.dppx, 7.dppx + 4.dppx + 2.dppx)
assertEquals(13.fr, 7.fr + 4.fr + 2.fr)
}
@Test
fun substractHomogenous() {
assertEquals(1.percent, 7.percent - 4.percent - 2.percent)
assertEquals(1.em, 7.em - 4.em - 2.em)
assertEquals(1.ch, 7.ch - 4.ch - 2.ch)
assertEquals(1.cssRem, 7.cssRem - 4.cssRem - 2.cssRem)
assertEquals(1.vw, 7.vw - 4.vw - 2.vw)
assertEquals(1.vh, 7.vh - 4.vh - 2.vh)
assertEquals(1.vmin, 7.vmin - 4.vmin - 2.vmin)
assertEquals(1.vmax, 7.vmax - 4.vmax - 2.vmax)
assertEquals(1.cm, 7.cm - 4.cm - 2.cm)
assertEquals(1.mm, 7.mm - 4.mm - 2.mm)
assertEquals(1.pt, 7.pt - 4.pt - 2.pt)
assertEquals(1.pc, 7.pc - 4.pc - 2.pc)
assertEquals(1.px, 7.px - 4.px - 2.px)
assertEquals(1.deg, 7.deg - 4.deg - 2.deg)
assertEquals(1.grad, 7.grad - 4.grad - 2.grad)
assertEquals(1.rad, 7.rad - 4.rad - 2.rad)
assertEquals(1.turn, 7.turn - 4.turn - 2.turn)
assertEquals(1.s, 7.s - 4.s - 2.s)
assertEquals(1.ms, 7.ms - 4.ms - 2.ms)
assertEquals(1.dpi, 7.dpi - 4.dpi - 2.dpi)
assertEquals(1.dpcm, 7.dpcm - 4.dpcm - 2.dpcm)
assertEquals(1.dppx, 7.dppx - 4.dppx - 2.dppx)
assertEquals(1.fr, 7.fr - 4.fr - 2.fr)
}
}