/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.red.viewers; import static org.assertj.core.api.Assertions.assertThat; import org.eclipse.jface.resource.FontDescriptor; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyleRange; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; import org.junit.Test; import org.robotframework.ide.eclipse.main.plugin.RedImages; import org.robotframework.red.graphics.FontsManager; import org.robotframework.red.graphics.ImagesManager; public class ElementAddingTokenTest { @Test public void tokenHasCorrectParent() { final Object parent = new Object(); final ElementAddingToken token = new ElementAddingToken(parent, "", true, 0); assertThat(token.getParent()).isSameAs(parent); } @Test public void tokenHasAddImage_whenIsEnabledAndRankIsZero() { final ElementAddingToken token = new ElementAddingToken("element", true); final Image expectedImage = ImagesManager.getImage(RedImages.getAddImage()); assertThat(token.getImage()).isEqualTo(expectedImage); } @Test public void tokenHasNoImage_whenTheRankIsMoreThanZero() { final ElementAddingToken token = new ElementAddingToken(null, "element", true, 1); assertThat(token.getImage()).isNull(); } @Test public void tokenHasGrayedAddImage_whenIsDisabledAndRankIsZero() { final ElementAddingToken token = new ElementAddingToken("element", false); RedImages.getGrayedImage(RedImages.getAddImage()).equals(RedImages.getGrayedImage(RedImages.getAddImage())); final Image expectedImage = ImagesManager.getImage(RedImages.getGrayedImage(RedImages.getAddImage())); assertThat(token.getImage()).isEqualTo(expectedImage); } @Test public void labelForZeroRankedEnabledTokensHasItalicGreenName() { final ElementAddingToken token = new ElementAddingToken("element", true); final StyledString label = token.getStyledText(); final StyleRange[] ranges = label.getStyleRanges(); assertThat(label.getString()).isEqualTo("...add new element"); assertThat(ranges.length).isEqualTo(1); assertThat(ranges[0].start).isEqualTo(0); assertThat(ranges[0].length).isEqualTo(18); assertThat(ranges[0].foreground.getRGB()).isEqualTo(new RGB(30, 127, 60)); final FontDescriptor expectedFontDescriptor = FontDescriptor.createFrom(Display.getCurrent().getSystemFont()) .setStyle(SWT.ITALIC); assertThat(ranges[0].font).isEqualTo(FontsManager.getFont(expectedFontDescriptor)); } @Test public void labelForZeroRankedDisabledTokensHasItalicGrayName() { final ElementAddingToken token = new ElementAddingToken("element", false); final StyledString label = token.getStyledText(); final StyleRange[] ranges = label.getStyleRanges(); assertThat(label.getString()).isEqualTo("...add new element"); assertThat(ranges.length).isEqualTo(1); assertThat(ranges[0].start).isEqualTo(0); assertThat(ranges[0].length).isEqualTo(18); assertThat(ranges[0].foreground.getRGB()).isEqualTo(new RGB(200, 200, 200)); final FontDescriptor expectedFontDescriptor = FontDescriptor.createFrom(Display.getCurrent().getSystemFont()) .setStyle(SWT.ITALIC); assertThat(ranges[0].font).isEqualTo(FontsManager.getFont(expectedFontDescriptor)); } @Test public void labelForHigherOrderEnabledTokensHasOnlyItalicBoldGreenDots() { final ElementAddingToken token = new ElementAddingToken(null, "element", true, 1); final StyledString label = token.getStyledText(); final StyleRange[] ranges = label.getStyleRanges(); assertThat(label.getString()).isEqualTo("..."); assertThat(ranges.length).isEqualTo(1); assertThat(ranges[0].start).isEqualTo(0); assertThat(ranges[0].length).isEqualTo(3); assertThat(ranges[0].foreground.getRGB()).isEqualTo(new RGB(30, 127, 60)); final FontDescriptor expectedFontDescriptor = FontDescriptor.createFrom(Display.getCurrent().getSystemFont()) .setStyle(SWT.BOLD | SWT.ITALIC); assertThat(ranges[0].font).isEqualTo(FontsManager.getFont(expectedFontDescriptor)); } @Test public void labelForHigherOrderDisabledTokensHasOnlyItalicBoldGrayDots() { final ElementAddingToken token = new ElementAddingToken(null, "element", false, 1); final StyledString label = token.getStyledText(); final StyleRange[] ranges = label.getStyleRanges(); assertThat(label.getString()).isEqualTo("..."); assertThat(ranges.length).isEqualTo(1); assertThat(ranges[0].start).isEqualTo(0); assertThat(ranges[0].length).isEqualTo(3); assertThat(ranges[0].foreground.getRGB()).isEqualTo(new RGB(200, 200, 200)); final FontDescriptor expectedFontDescriptor = FontDescriptor.createFrom(Display.getCurrent().getSystemFont()) .setStyle(SWT.BOLD | SWT.ITALIC); assertThat(ranges[0].font).isEqualTo(FontsManager.getFont(expectedFontDescriptor)); } }