/*
* Copyright 2003-2016 JetBrains s.r.o.
*
* 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 jetbrains.mps.nodeEditor.cells;
import jetbrains.mps.nodeEditor.TestEditorEnvironment;
import jetbrains.mps.nodeEditor.cells.collections.AbstractContainerParameterizedTest;
import jetbrains.mps.nodeEditor.cells.collections.CellContainer;
import jetbrains.mps.openapi.editor.EditorComponent;
import jetbrains.mps.openapi.editor.EditorContext;
import jetbrains.mps.openapi.editor.TextBuilder;
import jetbrains.mps.openapi.editor.cells.CellAction;
import jetbrains.mps.openapi.editor.cells.CellActionType;
import jetbrains.mps.openapi.editor.cells.CellInfo;
import jetbrains.mps.openapi.editor.cells.EditorCell;
import jetbrains.mps.openapi.editor.cells.EditorCellContext;
import jetbrains.mps.openapi.editor.cells.EditorCell_Collection;
import jetbrains.mps.openapi.editor.cells.KeyMap;
import jetbrains.mps.openapi.editor.cells.SubstituteInfo;
import jetbrains.mps.openapi.editor.menus.transformation.TransformationMenuLookup;
import jetbrains.mps.openapi.editor.message.SimpleEditorMessage;
import jetbrains.mps.openapi.editor.style.Style;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.mps.openapi.model.SNode;
import org.jetbrains.mps.util.Condition;
import org.junit.AfterClass;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import java.awt.Graphics;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* User: shatalin
* Date: 28/04/16
*/
@RunWith(Parameterized.class)
public class ContainerTests<T> extends AbstractContainerParameterizedTest<T> {
private static TestEditorEnvironment TEST_EDITOR_ENV;
@Parameters
public static Object[][] data() {
try {
TEST_EDITOR_ENV = new TestEditorEnvironment();
} catch (Exception e) {
throw new AssertionError("Cannot initialize TestEditorEnvironment", e);
}
return new Factory[][]{
{CellContainer::new, DummyAPICell::new},
{CellContainer::new, DummyBasicCell::new},
// TODO: switch this test back at the moment we remove all casts to EditorCell_Basic within EditorCell_Collection_Container
// {() -> jetbrains.mps.nodeEditor.cells.EditorCell_Collection.createVertical(TEST_EDITOR_ENV.getEditorContext(), null).getEditorCells(),
// DummyAPICell::new},
{() -> jetbrains.mps.nodeEditor.cells.EditorCell_Collection.createVertical(TEST_EDITOR_ENV.getEditorContext(), null).getEditorCells(),
DummyBasicCell::new}};
}
@AfterClass
public static void disposeStatic() {
try {
TEST_EDITOR_ENV.dispose();
} catch (Exception e) {
throw new AssertionError("Cannot dispose TestEditorEnvironment", e);
}
}
private static class DummyBasicCell extends EditorCell_Basic {
private DummyBasicCell() {
super(TEST_EDITOR_ENV.getEditorContext(), null);
}
@Override
protected void paintContent(Graphics g, ParentSettings parentSettings) {
}
}
private static class DummyAPICell implements EditorCell {
private Map<Object, Object> myUserObjects = new HashMap<>();
@Override
public int getX() {
return 0;
}
@Override
public void setX(int x) {
}
@Override
public int getY() {
return 0;
}
@Override
public void setY(int y) {
}
@Override
public int getWidth() {
return 0;
}
@Override
public void setWidth(int width) {
}
@Override
public int getHeight() {
return 0;
}
@Override
public void setHeight(int height) {
}
@Override
public int getBottom() {
return 0;
}
@Override
public int getRight() {
return 0;
}
@Override
public int getBaseline() {
return 0;
}
@Override
public void setBaseline(int y) {
}
@Override
public int getAscent() {
return 0;
}
@Override
public int getDescent() {
return 0;
}
@Override
public int getEffectiveWidth() {
return 0;
}
@Override
public int getLeftInset() {
return 0;
}
@Override
public int getRightInset() {
return 0;
}
@Override
public int getTopInset() {
return 0;
}
@Override
public int getBottomInset() {
return 0;
}
@Override
public void setLeftGap(int gap) {
}
@Override
public int getLeftGap() {
return 0;
}
@Override
public void setRightGap(int gap) {
}
@Override
public int getRightGap() {
return 0;
}
@Override
public void moveTo(int x, int y) {
}
@Override
public void setSelected(boolean isSelected) {
}
@Override
public boolean isSelected() {
return false;
}
@Override
public void setSelectable(boolean isSelected) {
}
@Override
public boolean isSelectable() {
return false;
}
@Override
public void setCellId(String cellId) {
}
@Override
public String getCellId() {
return null;
}
@Override
public void setRole(String role) {
}
@Override
public String getRole() {
return null;
}
@Override
public boolean isErrorState() {
return false;
}
@Override
public void setErrorState(boolean isError) {
}
@Override
public void relayout() {
}
@Override
public void requestRelayout() {
}
@Override
public boolean wasRelayoutRequested() {
return false;
}
@Override
public void setCaretX(int x) {
}
@Override
public int getCaretX() {
return 0;
}
@Override
public void home() {
}
@Override
public void end() {
}
@Override
public EditorContext getContext() {
return null;
}
@Override
public EditorCell_Collection getParent() {
return null;
}
@Override
public EditorCell getNextSibling() {
return null;
}
@Override
public EditorCell getPrevSibling() {
return null;
}
@Override
public EditorCell getRootParent() {
return null;
}
@Override
public EditorCell findLeaf(int x, int y) {
return null;
}
@Override
public EditorCell findNearestLeafOnLine(int x, int y, Condition<EditorCell> condition) {
return null;
}
@Override
public boolean isSingleNodeCell() {
return false;
}
@Override
public SNode getSNode() {
return null;
}
@Override
public void putUserObject(Object key, Object value) {
myUserObjects.put(key, value);
}
@Override
public Object getUserObject(Object key) {
return myUserObjects.get(key);
}
@Override
public EditorComponent getEditorComponent() {
return null;
}
@Override
public Style getStyle() {
return null;
}
@Override
public KeyMap getKeyMap() {
return null;
}
@Override
public void addKeyMap(KeyMap keyMap) {
}
@Override
public CellAction getAction(CellActionType type) {
return null;
}
@Override
public void setAction(CellActionType type, CellAction action) {
}
@Override
public Collection<CellActionType> getAvailableActions() {
return null;
}
@Override
public List<SimpleEditorMessage> getMessages() {
return null;
}
@Override
public void setSubstituteInfo(SubstituteInfo info) {
}
@Override
public SubstituteInfo getSubstituteInfo() {
return null;
}
@Nullable
@Override
public TransformationMenuLookup getTransformationMenuLookup() {
return null;
}
@Override
public void setTransformationMenuLookup(@Nullable TransformationMenuLookup transformationMenuLookup) {
}
@Override
public TextBuilder renderText() {
return null;
}
@Override
public void setBig(boolean big) {
}
@Override
public boolean isBig() {
return false;
}
@Override
public void setCellContext(EditorCellContext cellContext) {
}
@Override
public EditorCellContext getCellContext() {
return null;
}
@Override
public void setReferenceCell(boolean isReference) {
}
@Override
public boolean isReferenceCell() {
return false;
}
@NotNull
@Override
public CellInfo getCellInfo() {
return new DefaultCellInfo(this);
}
}
}