From ca54c8fa1fb5518ff5902259893dce03fd23e9b0 Mon Sep 17 00:00:00 2001 From: Pavel Dolgov Date: Wed, 15 Feb 2017 17:50:09 +0300 Subject: [PATCH] Javafx: Added tests for JavaFxColorProvider - number format for JavaFX colors in Java source (IDEA-167948) --- .../javaFX/JavaFxColorProviderFormatTest.kt | 51 +++++++++++++++++++ .../NumberComponentFormat.java | 33 ++++++++++++ .../NumberComponentFormat_after.java | 33 ++++++++++++ 3 files changed, 117 insertions(+) create mode 100644 plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/JavaFxColorProviderFormatTest.kt create mode 100644 plugins/javaFX/testData/colorProviderFormat/NumberComponentFormat.java create mode 100644 plugins/javaFX/testData/colorProviderFormat/NumberComponentFormat_after.java diff --git a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/JavaFxColorProviderFormatTest.kt b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/JavaFxColorProviderFormatTest.kt new file mode 100644 index 000000000000..55505b28b0c8 --- /dev/null +++ b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/JavaFxColorProviderFormatTest.kt @@ -0,0 +1,51 @@ +package org.jetbrains.plugins.javaFX + +import com.intellij.openapi.application.PluginPathManager +import com.intellij.openapi.application.WriteAction +import com.intellij.psi.PsiExpression +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.plugins.javaFX.fxml.AbstractJavaFXTestCase +import org.jetbrains.plugins.javaFX.fxml.codeInsight.JavaFxColorProvider +import java.awt.Color +import java.util.* + +/** + * @author Pavel.Dolgov + */ +class JavaFxColorProviderFormatTest : AbstractJavaFXTestCase() { + override fun getTestDataPath() = PluginPathManager.getPluginHomePath("javaFX") + "/testData/colorProviderFormat" + + fun testLocaleWithDotAsNumberSeparator() = withLocale(Locale.US) { doTest("NumberComponentFormat") } + + fun testLocaleWithCommaAsNumberSeparator() = withLocale(Locale.GERMANY) { doTest("NumberComponentFormat") } + + private fun withLocale(locale: Locale, doWork: () -> Unit) { + val oldLocale = Locale.getDefault() + try { + Locale.setDefault(locale) + doWork() + } + finally { + Locale.setDefault(oldLocale) + } + } + + private fun doTest(testName: String) { + myFixture.configureByFile(testName + ".java") + val colorExpressions = myFixture.editor.caretModel.allCarets + .map { caret -> myFixture.file.findElementAt(caret.offset) } + .map { element -> PsiTreeUtil.findFirstParent(element, { it?.parent !is PsiExpression }) as? PsiExpression } + + val colorProvider = JavaFxColorProvider() + val components = arrayOf(0, 0x40, 0x80, 0xFF) + for ((i, expression) in colorExpressions.withIndex()) { + val color = Color(components[i % 4], components[(i + 1) % 4], components[(i + 2) % 4], components[(i + 3) % 4]) + WriteAction.run { + if (expression != null) { + colorProvider.setColorTo(expression, color) + } + } + } + myFixture.checkResultByFile(testName + "_after.java") + } +} \ No newline at end of file diff --git a/plugins/javaFX/testData/colorProviderFormat/NumberComponentFormat.java b/plugins/javaFX/testData/colorProviderFormat/NumberComponentFormat.java new file mode 100644 index 000000000000..e7f2227b9ba6 --- /dev/null +++ b/plugins/javaFX/testData/colorProviderFormat/NumberComponentFormat.java @@ -0,0 +1,33 @@ +import javafx.scene.paint.Color; +import static javafx.scene.paint.Color.*; + +public class Main { + void foo() { + Color color1 = new Color (1, 1, 1, 1); + Color color2 = Color.color(1, 1, 1, 1); + Color color3 = Color.color(1, 1, 1, 1); + Color color4 = color (1, 1, 1, 1); + Color color5 = color (1, 1, 1); + + Color gray1 = Color.gray(1, 1); + Color gray2 = Color.gray(1, 1); + Color gray3 = gray (1, 1); + Color gray4 = gray (1); + + Color rgb1 = Color.rgb(255, 255, 255, 1); + Color rgb2 = rgb (255, 255, 255, 1); + Color rgb3 = Color.rgb(255, 255, 255, 1); + Color rgb4 = rgb (255, 255, 255); + + Color grayRgb1 = Color.grayRgb(255, 1); + Color grayRgb2 = grayRgb (255, 1); + Color grayRgb3 = Color.grayRgb(255, 1); + Color grayRgb4 = grayRgb (255); + + Color hsb1 = Color.hsb(360, 1, 1, 1); + Color hsb2 = hsb(360, 1, 1, 1); + Color hsb3 = Color.hsb(360, 1, 1, 1); + Color hsb4 = hsb(360, 1, 1, 1); + Color hsb5 = hsb(360, 1, 1); + } +} \ No newline at end of file diff --git a/plugins/javaFX/testData/colorProviderFormat/NumberComponentFormat_after.java b/plugins/javaFX/testData/colorProviderFormat/NumberComponentFormat_after.java new file mode 100644 index 000000000000..cfa9cbebba1b --- /dev/null +++ b/plugins/javaFX/testData/colorProviderFormat/NumberComponentFormat_after.java @@ -0,0 +1,33 @@ +import javafx.scene.paint.Color; +import static javafx.scene.paint.Color.*; + +public class Main { + void foo() { + Color color1 = new Color (0,0.251,0.502,1); + Color color2 = Color.color(0.251,0.502,1,0); + Color color3 = Color.color(0.502,1,0,0.251); + Color color4 = color (1,0,0.251,0.502); + Color color5 = color (0,0.251,0.502); + + Color gray1 = Color.color(0.251,0.502,1,0); + Color gray2 = Color.color(0.502,1,0,0.251); + Color gray3 = color (1,0,0.251,0.502); + Color gray4 = color (0,0.251,0.502); + + Color rgb1 = Color.rgb(64,128,255,0); + Color rgb2 = rgb (128,255,0,0.251); + Color rgb3 = Color.rgb(255,0,64,0.502); + Color rgb4 = rgb (0,64,128); + + Color grayRgb1 = Color.rgb(64,128,255,0); + Color grayRgb2 = rgb (128,255,0,0.251); + Color grayRgb3 = Color.rgb(255,0,64,0.502); + Color grayRgb4 = rgb (0,64,128); + + Color hsb1 = Color.hsb(219.8953,0.749,1,0); + Color hsb2 = hsb(89.8824,1,1,0.251); + Color hsb3 = Color.hsb(344.9412,1,1,0.502); + Color hsb4 = hsb(210,1,0.502); + Color hsb5 = hsb(219.8953,0.749,1,0); + } +} \ No newline at end of file