From f0fda7074c92618bbf04445d249f56f6014acd1c Mon Sep 17 00:00:00 2001 From: Anton Tarasov Date: Tue, 27 Mar 2018 20:21:14 +0300 Subject: [PATCH] Add RowIconPaintTest --- .../testData/ui/gold_RowIcon@1x.png | Bin 0 -> 487 bytes .../testData/ui/gold_RowIcon@2x.png | Bin 0 -> 1004 bytes .../testData/ui/gold_RowIcon@4x.png | Bin 0 -> 4346 bytes .../util/ui/LayeredIconPaintTest.java | 26 ++++++++----- .../intellij/util/ui/RowIconPaintTest.java | 36 ++++++++++++++++++ 5 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 platform/platform-tests/testData/ui/gold_RowIcon@1x.png create mode 100644 platform/platform-tests/testData/ui/gold_RowIcon@2x.png create mode 100644 platform/platform-tests/testData/ui/gold_RowIcon@4x.png create mode 100644 platform/platform-tests/testSrc/com/intellij/util/ui/RowIconPaintTest.java diff --git a/platform/platform-tests/testData/ui/gold_RowIcon@1x.png b/platform/platform-tests/testData/ui/gold_RowIcon@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..89c446f6269ce14cbe4b282edebf7b98e052abb1 GIT binary patch literal 487 zcmVQf*Nin1Yf$H8vYH0L2Qs1NDij%|NsAop!gV+UIWAqV98ra!Adt1gKj^n z%>MssO56W8Gkd@o#0H7oN({OMQUfz6AtB*YXlUry;Nak|^XJds1r(bOaY=m8?PqP3 z|6fn*!iqt1Hxh#GJPr-z1Zvv<{Q2{J@87@Q+}qoG%GufZ2T-h$;YNH=^Mlg#|F0&u z;l&S1Gya3r0yQZCan*wd4;I(e)$Q^1^}Pe+XER)n54ifGyY~Of{wBQmMR(nQkXoqs zX65AMocH(lzqfSh(jXw;jp1fe@NbYJV(`tRkl#>)nms%`-hKZ3*#XFw1!69Sn~A}{ zpS4&1Ck6x6euo;Aws-H|NFc2Si%o{>vHmxnG!*@R+FXhkgVcc3LJjh;x3>pU|ApZO z-H7+=yqgpE|4DrzUJOzLQVTW64v6)DSRQWBnKWN6piK`R6s7!sT%C&*KPXNCx#l5A zEdxGqJuXlUWZ0d|=>HGPGk}RO3yeW*kQhh~q=tbQ07`7vV*+}w$N1g75g+gagh6bO d7)XwgegGfO+scD|$9Vt%002ovPDHLkV1jOk=t}?q literal 0 HcmV?d00001 diff --git a/platform/platform-tests/testData/ui/gold_RowIcon@2x.png b/platform/platform-tests/testData/ui/gold_RowIcon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4246f144092022de3fdbf46966256ea7288c2240 GIT binary patch literal 1004 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 literal 0 HcmV?d00001 diff --git a/platform/platform-tests/testSrc/com/intellij/util/ui/LayeredIconPaintTest.java b/platform/platform-tests/testSrc/com/intellij/util/ui/LayeredIconPaintTest.java index 6a6bca0b84bc..2655e18c4903 100644 --- a/platform/platform-tests/testSrc/com/intellij/util/ui/LayeredIconPaintTest.java +++ b/platform/platform-tests/testSrc/com/intellij/util/ui/LayeredIconPaintTest.java @@ -3,6 +3,7 @@ package com.intellij.util.ui; import com.intellij.openapi.util.IconLoader.CachedImageIcon; import com.intellij.openapi.util.Pair; +import com.intellij.openapi.util.ScalableIcon; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.ui.LayeredIcon; import com.intellij.util.ui.JBUI.ScaleContext; @@ -16,9 +17,7 @@ import java.awt.image.BufferedImage; import java.io.File; import java.net.MalformedURLException; -import static com.intellij.util.ui.JBUI.ScaleType.PIX_SCALE; -import static com.intellij.util.ui.JBUI.ScaleType.SYS_SCALE; -import static com.intellij.util.ui.JBUI.ScaleType.USR_SCALE; +import static com.intellij.util.ui.JBUI.ScaleType.*; /** * Tests {@link com.intellij.ui.LayeredIcon} painting. @@ -37,21 +36,28 @@ public class LayeredIconPaintTest extends TestScaleHelper { test(2, 2); } - public void test(int usrScale, int sysScale) throws MalformedURLException { - LayeredIcon icon = new LayeredIcon(2); + private void test(int iconScale, int sysScale) throws MalformedURLException { CachedImageIcon icon1 = new CachedImageIcon(new File(getIcon1Path()).toURI().toURL()); CachedImageIcon icon2 = new CachedImageIcon(new File(getIcon2Path()).toURI().toURL()); - ScaleContext ctx = ScaleContext.create(USR_SCALE.of(usrScale), SYS_SCALE.of(sysScale)); + ScaleContext ctx = ScaleContext.create(SYS_SCALE.of(sysScale)); icon1.updateScaleContext(ctx.copy()); icon2.updateScaleContext(ctx.copy()); + Icon icon = createAndSetIcons(icon1, icon2).scale(iconScale); + ctx.update(OBJ_SCALE.of(iconScale)); + test(icon, ctx); + } + + protected ScalableIcon createAndSetIcons(Icon icon1, Icon icon2) { + LayeredIcon icon = new LayeredIcon(2); icon.setIcon(icon1, 0); icon.setIcon(icon2, 1, 10, 6); + return icon; + } - Icon scaledIcon = icon.scale(usrScale); - - Pair pair = createImageAndGraphics(sysScale, scaledIcon.getIconWidth(), scaledIcon.getIconHeight()); + private void test(Icon scaledIcon, ScaleContext ctx) { + Pair pair = createImageAndGraphics(ctx.getScale(SYS_SCALE), scaledIcon.getIconWidth(), scaledIcon.getIconHeight()); BufferedImage iconImage = pair.first; Graphics2D g2d = pair.second; @@ -65,7 +71,7 @@ public class LayeredIconPaintTest extends TestScaleHelper { new AASmootherComparator(0.1, 0.1, new Color(0, 0, 0, 0)), goldImage, iconImage, null); } - private static String getGoldImagePath(int scale) { + protected String getGoldImagePath(int scale) { return PlatformTestUtil.getPlatformTestDataPath() + "ui/gold_LayeredIcon@" + scale + "x.png"; } diff --git a/platform/platform-tests/testSrc/com/intellij/util/ui/RowIconPaintTest.java b/platform/platform-tests/testSrc/com/intellij/util/ui/RowIconPaintTest.java new file mode 100644 index 000000000000..32b3487abd61 --- /dev/null +++ b/platform/platform-tests/testSrc/com/intellij/util/ui/RowIconPaintTest.java @@ -0,0 +1,36 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.util.ui; + +import com.intellij.openapi.util.ScalableIcon; +import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.ui.RowIcon; +import org.junit.Test; + +import javax.swing.*; +import java.net.MalformedURLException; + +/** + * Tests {@link com.intellij.ui.RowIcon} painting. + * + * @author tav + */ +public class RowIconPaintTest extends LayeredIconPaintTest { + @Test + @Override + public void test() throws MalformedURLException { + super.test(); + } + + @Override + protected ScalableIcon createAndSetIcons(Icon icon1, Icon icon2) { + RowIcon icon = new RowIcon(2); + icon.setIcon(icon1, 0); + icon.setIcon(icon2, 1); + return icon; + } + + @Override + protected String getGoldImagePath(int scale) { + return PlatformTestUtil.getPlatformTestDataPath() + "ui/gold_RowIcon@" + scale + "x.png"; + } +}