/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.workbench.common.stunner.lienzo.palette; import java.util.Iterator; import com.ait.lienzo.client.core.shape.Group; import com.ait.lienzo.client.core.shape.IPrimitive; import com.ait.lienzo.client.core.shape.Rectangle; import com.ait.lienzo.test.LienzoMockitoTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.kie.workbench.common.stunner.lienzo.Decorator; import org.kie.workbench.common.stunner.lienzo.Decorator.ItemCallback; import org.kie.workbench.common.stunner.lienzo.grid.Grid; import org.kie.workbench.common.stunner.lienzo.grid.Grid.Point; import org.kie.workbench.common.stunner.lienzo.palette.AbstractPalette.Callback; import org.mockito.Mock; import static org.mockito.Mockito.*; @RunWith(LienzoMockitoTestRunner.class) public class PaletteTest { @Mock private Callback callback; @Mock private IPrimitive firstPrimitive; @Mock private IPrimitive secondPrimitive; @Mock private Decorator decorator; @Mock private Group group; @Mock private Group itemsGroup; @Mock private Rectangle rectangle; private static final int ICON_SIZE = 10; private static final int PADDING = 5; private static final int X = 11; private static final int Y = 12; private IPrimitive[] arrayOfPrimitives; private Iterator<Point> pointIterator; private Palette miniPalette; private Grid grid; @Before public void setUp() { arrayOfPrimitives = new IPrimitive[]{firstPrimitive, secondPrimitive}; miniPalette = new Palette() .setIconSize(ICON_SIZE) .setItemCallback(callback) .setPadding(PADDING) .setX(X) .setY(Y); grid = spy(miniPalette.createGrid(arrayOfPrimitives.length)); pointIterator = spy(grid.iterator()); doReturn(pointIterator).when(grid).iterator(); miniPalette = spy(miniPalette); doReturn(miniPalette).when(miniPalette).add(anyObject()); when(itemsGroup.add(anyObject())).thenReturn(itemsGroup); doReturn(decorator).when(miniPalette).createDecorator(anyInt(), anyDouble(), anyDouble()); doReturn(grid).when(miniPalette).createGrid(anyInt()); doReturn(decorator).when(decorator).build(anyObject(), anyDouble(), anyDouble()); doReturn(decorator).when(decorator).setX(anyDouble()); doReturn(decorator).when(decorator).setY(anyDouble()); doReturn(group).when(decorator).add(anyObject()); miniPalette.itemsGroup = itemsGroup; } @Test public void testBuild() { miniPalette.build(new AbstractPalette.Item(firstPrimitive, AbstractPalette.ItemDecorator.DEFAULT), new AbstractPalette.Item(secondPrimitive, AbstractPalette.ItemDecorator.DEFAULT)); verify(miniPalette).clear(); verify(miniPalette).createGrid(arrayOfPrimitives.length); verify(itemsGroup, times(2)).add(decorator); verify(pointIterator, times(2)).next(); verify(decorator).build(firstPrimitive, (double) ICON_SIZE, (double) ICON_SIZE); verify(decorator).build(secondPrimitive, (double) ICON_SIZE, (double) ICON_SIZE); verify(decorator, times(2)).setX(anyDouble()); verify(decorator, times(2)).setY(anyDouble()); verify(decorator, times(2)).addNodeMouseDownHandler(anyObject()); verify(decorator, times(2)).addNodeMouseClickHandler(anyObject()); } @Test public void testCreateDecoratorCallback() { arrayOfPrimitives = new IPrimitive[]{firstPrimitive, secondPrimitive}; miniPalette = spy(new Palette() .setIconSize(ICON_SIZE) .setItemCallback(callback) .setPadding(PADDING) .setX(X) .setY(Y)); ItemCallback callback = spy(miniPalette.createDecoratorCallback(1, 0, 0)); callback.onShow(6.0, 4.0); verify(miniPalette).doShowItem(1, 6.0, 4.0, 0, 0); callback.onHide(); verify(miniPalette).doItemOut(1); } @Test public void testClear() { miniPalette.clear(); verify(miniPalette).removeAll(); } @Test public void testNullCallback() { miniPalette.setItemCallback(null); miniPalette.doShowItem(1, 4, 3.2, 0, 0); miniPalette.doItemOut(1); miniPalette.onItemMouseDown(1, 4, 7, 0, 0); miniPalette.onItemClick(1, 2, 3, 0, 0); } @Test public void testCallback() { miniPalette.setItemCallback(callback); miniPalette.doShowItem(1, 4, 3.2, 0, 0); verify(callback).onItemHover(1, 4.0, 3.2, 0, 0); miniPalette.doItemOut(1); verify(callback).onItemOut(1); miniPalette.onItemMouseDown(1, 4, 7, 0, 0); verify(callback).onItemMouseDown(1, 4, 7, 0, 0); miniPalette.onItemClick(1, 2, 3, 0, 0); verify(miniPalette).onItemClick(1, 2, 3, 0, 0); } }