Browse Source
Co-authored-by: Oleksandr Karpovich <oleksandr.karpovich@jetbrains.com>pull/1312/head
Oleksandr Karpovich
3 years ago
committed by
GitHub
1 changed files with 155 additions and 0 deletions
@ -0,0 +1,155 @@
|
||||
package org.jetbrains.compose.web.core.tests |
||||
|
||||
import kotlinx.browser.window |
||||
import org.jetbrains.compose.web.css.* |
||||
import org.jetbrains.compose.web.dom.Div |
||||
import org.jetbrains.compose.web.dom.P |
||||
import org.jetbrains.compose.web.dom.Span |
||||
import org.jetbrains.compose.web.testutils.runTest |
||||
import org.w3c.dom.HTMLParagraphElement |
||||
import org.w3c.dom.HTMLSpanElement |
||||
import org.w3c.dom.get |
||||
import kotlin.test.Test |
||||
import kotlin.test.assertEquals |
||||
|
||||
class CssSelectorsTests { |
||||
|
||||
private object TestSimpleDescendantsSelectorStyleSheet: StyleSheet() { |
||||
val cls1 by style { |
||||
"p" { |
||||
color(Color.red) |
||||
} |
||||
} |
||||
} |
||||
|
||||
@Test |
||||
fun simpleDescendantsSelectorComputedStyleIsCorrect() = runTest { |
||||
composition { |
||||
Style(TestSimpleDescendantsSelectorStyleSheet) |
||||
|
||||
Div(attrs = { |
||||
classes(TestSimpleDescendantsSelectorStyleSheet.cls1) |
||||
}) { |
||||
P { } // Should be // should be <rgb(255, 0, 0)> |
||||
} |
||||
|
||||
P {} // should be <rgb(0, 0, 0)> |
||||
} |
||||
|
||||
root.children[1]!!.let { el -> |
||||
val pEl = el.firstChild as HTMLParagraphElement |
||||
assertEquals("rgb(255, 0, 0)", window.getComputedStyle(pEl).color) |
||||
} |
||||
|
||||
root.children[2]!!.let { el -> |
||||
val pEl = el |
||||
assertEquals("rgb(0, 0, 0)", window.getComputedStyle(pEl).color) |
||||
} |
||||
} |
||||
|
||||
private object TestSeveralDescendantsSelectorStyleSheet: StyleSheet() { |
||||
val cls1 by style { |
||||
"p" { |
||||
color(Color.red) |
||||
|
||||
"span" { |
||||
color(Color.blue) |
||||
} |
||||
} |
||||
"span" { |
||||
color(rgb(100, 100, 200)) |
||||
} |
||||
} |
||||
} |
||||
|
||||
@Test |
||||
fun descendantsSelectorComputedStyleIsCorrect() = runTest { |
||||
composition { |
||||
Style(TestSeveralDescendantsSelectorStyleSheet) |
||||
|
||||
Div(attrs = { |
||||
classes(TestSeveralDescendantsSelectorStyleSheet.cls1) |
||||
}) { |
||||
P { // should be <rgb(255, 0, 0)> |
||||
Span { } // should be <rgb(0, 0, 255)> |
||||
} |
||||
} |
||||
|
||||
P { // should be <rgb(0, 0, 0)> |
||||
Span { } // should be <rgb(0, 0, 0)> |
||||
} |
||||
} |
||||
|
||||
root.children[1]!!.let { el -> |
||||
val pEl = el.firstChild as HTMLParagraphElement |
||||
val spanInPel = pEl.firstChild as HTMLSpanElement |
||||
|
||||
assertEquals("rgb(255, 0, 0)", window.getComputedStyle(pEl).color) |
||||
assertEquals("rgb(0, 0, 255)", window.getComputedStyle(spanInPel).color) |
||||
} |
||||
|
||||
root.children[2]!!.let { el -> |
||||
val pEl = el |
||||
val spanEl = pEl.firstChild as HTMLSpanElement |
||||
|
||||
assertEquals("rgb(0, 0, 0)", window.getComputedStyle(pEl).color) |
||||
assertEquals("rgb(0, 0, 0)", window.getComputedStyle(spanEl).color) |
||||
} |
||||
} |
||||
|
||||
private object TestDescendantsSelectorOfClassAndOfRoot: StyleSheet() { |
||||
val cls1 by style { |
||||
"p" { |
||||
color(Color.red) |
||||
|
||||
"span" { |
||||
color(Color.blue) |
||||
} |
||||
} |
||||
"span" { |
||||
color(rgb(100, 100, 200)) |
||||
} |
||||
} |
||||
} |
||||
|
||||
@Test |
||||
fun descendantsSelectorOfClassAndOfRootComputedStyleAreCorrect() = runTest { |
||||
composition { |
||||
Style(TestDescendantsSelectorOfClassAndOfRoot) |
||||
|
||||
Div(attrs = { |
||||
classes(TestDescendantsSelectorOfClassAndOfRoot.cls1) |
||||
}) { |
||||
P { // should be <rgb(255, 0, 0)> |
||||
Span { } // should be <rgb(0, 0, 255)> |
||||
} |
||||
Span { } // should be <rgb(100, 100, 200)> |
||||
} |
||||
|
||||
// Not a desc of "cls1" |
||||
P { // should be <rgb(0, 0, 0)> |
||||
Span { } // should be <rgb(0, 0, 0)> |
||||
} |
||||
} |
||||
|
||||
root.children[1]!!.let { el -> |
||||
val pEl = el.firstChild as HTMLParagraphElement |
||||
val spanInPel = pEl.firstChild as HTMLSpanElement |
||||
|
||||
assertEquals("rgb(255, 0, 0)", window.getComputedStyle(pEl).color) |
||||
assertEquals("rgb(0, 0, 255)", window.getComputedStyle(spanInPel).color) |
||||
|
||||
|
||||
val spanInClsEl = el.children[1] as HTMLSpanElement |
||||
assertEquals("rgb(100, 100, 200)", window.getComputedStyle(spanInClsEl).color) |
||||
} |
||||
|
||||
root.children[2]!!.let { el -> |
||||
val pEl = el |
||||
val spanEl = pEl.firstChild as HTMLSpanElement |
||||
|
||||
assertEquals("rgb(0, 0, 0)", window.getComputedStyle(pEl).color) |
||||
assertEquals("rgb(0, 0, 0)", window.getComputedStyle(spanEl).color) |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue