blob: a84d882e388738f62c0653fba9165f9fd109bd42 [file] [log] [blame]
/*
* Copyright (C) 2013 The Android Open Source Project
*
* 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 com.intellij.android.designer.model;
import com.intellij.android.designer.designSurface.TransformedComponent;
import junit.framework.TestCase;
import javax.swing.*;
import java.awt.*;
public class RadViewComponentTest extends TestCase {
public void testModelRectangleDpConversion() {
TestComponent testComponent = new TestComponent();
MyRoot nativeComponent = new MyRoot(2.0);
JPanel panel = new JPanel();
panel.add(nativeComponent);
nativeComponent.setLocation(15, 20);
JPanel other = new JPanel();
panel.add(other);
other.setLocation(5, 5);
testComponent.setNativeComponent(nativeComponent);
assertEquals(new Rectangle(100, 110, 300, 400), testComponent.toModelDp(160, nativeComponent, new Rectangle(100, 110, 300, 400)));
assertEquals(new Rectangle(100, 110, 300, 400),
testComponent.toModelDp(160, panel, new Rectangle(100 * 2 + 15, 110 * 2 + 20, 300 * 2, 400 * 2)));
assertEquals(new Rectangle(100, 110, 300, 400),
testComponent.toModelDp(160, other, new Rectangle(100 * 2 + 15 - 5, 110 * 2 + 20 - 5, 300 * 2, 400 * 2)));
assertEquals(new Rectangle(100 / 2, 110 / 2, 300 / 2, 400 / 2),
testComponent.toModelDp(2 * 160, nativeComponent, new Rectangle(100, 110, 300, 400)));
assertEquals(new Rectangle(100 / 2, 110 / 2, 300 / 2, 400 / 2),
testComponent.toModelDp(2 * 160, panel, new Rectangle(100 * 2 + 15, 110 * 2 + 20, 300 * 2, 400 * 2)));
assertEquals(new Rectangle(100 / 2, 110 / 2, 300 / 2, 400 / 2),
testComponent.toModelDp(2 * 160, other, new Rectangle(100 * 2 + 15 - 5, 110 * 2 + 20 - 5, 300 * 2, 400 * 2)));
}
public void testModelPointDpConversion() {
TestComponent testComponent = new TestComponent();
MyRoot nativeComponent = new MyRoot(2.0);
JPanel panel = new JPanel();
panel.add(nativeComponent);
nativeComponent.setLocation(15, 20);
JPanel other = new JPanel();
panel.add(other);
other.setLocation(5, 5);
testComponent.setNativeComponent(nativeComponent);
assertEquals(new Point(100, 110), testComponent.toModelDp(160, nativeComponent, new Point(100, 110)));
assertEquals(new Point(100, 110),
testComponent.toModelDp(160, panel, new Point(100 * 2 + 15, 110 * 2 + 20)));
assertEquals(new Point(100, 110),
testComponent.toModelDp(160, other, new Point(100 * 2 + 15 - 5, 110 * 2 + 20 - 5)));
assertEquals(new Point(100 / 2, 110 / 2),
testComponent.toModelDp(2 * 160, nativeComponent, new Point(100, 110)));
assertEquals(new Point(100 / 2, 110 / 2),
testComponent.toModelDp(2 * 160, panel, new Point(100 * 2 + 15, 110 * 2 + 20)));
assertEquals(new Point(100 / 2, 110 / 2),
testComponent.toModelDp(2 * 160, other, new Point(100 * 2 + 15 - 5, 110 * 2 + 20 - 5)));
}
public void testModelDimensionDpConversion() {
TestComponent testComponent = new TestComponent();
MyRoot nativeComponent = new MyRoot(2.0);
JPanel panel = new JPanel();
panel.add(nativeComponent);
nativeComponent.setLocation(15, 20);
JPanel other = new JPanel();
panel.add(other);
other.setLocation(5, 5);
testComponent.setNativeComponent(nativeComponent);
assertEquals(new Dimension(300, 400), testComponent.toModelDp(160, nativeComponent, new Dimension(300, 400)));
assertEquals(new Dimension(300, 400),
testComponent.toModelDp(160, panel, new Dimension(300 * 2, 400 * 2)));
assertEquals(new Dimension(300, 400),
testComponent.toModelDp(160, other, new Dimension(300 * 2, 400 * 2)));
assertEquals(new Dimension(300 / 2, 400 / 2),
testComponent.toModelDp(2 * 160, nativeComponent, new Dimension(300, 400)));
assertEquals(new Dimension(300 / 2, 400 / 2),
testComponent.toModelDp(2 * 160, panel, new Dimension(300 * 2, 400 * 2)));
assertEquals(new Dimension(300 / 2, 400 / 2),
testComponent.toModelDp(2 * 160, other, new Dimension(300 * 2, 400 * 2)));
}
private static class TestComponent extends RadViewComponent { // Because RadViewComponent is abstract
}
private static class MyRoot extends JComponent implements TransformedComponent {
private double myScale;
private MyRoot(double scale) {
myScale = scale;
}
@Override
public double getScale() {
return myScale;
}
@Override
public int getShiftX() {
return 0;
}
@Override
public int getShiftY() {
return 0;
}
}
}