summaryrefslogtreecommitdiff
path: root/solver/src/test/java/android/support/constraint/solver/ChainTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'solver/src/test/java/android/support/constraint/solver/ChainTest.java')
-rw-r--r--solver/src/test/java/android/support/constraint/solver/ChainTest.java115
1 files changed, 115 insertions, 0 deletions
diff --git a/solver/src/test/java/android/support/constraint/solver/ChainTest.java b/solver/src/test/java/android/support/constraint/solver/ChainTest.java
index cf1dca6..520a83b 100644
--- a/solver/src/test/java/android/support/constraint/solver/ChainTest.java
+++ b/solver/src/test/java/android/support/constraint/solver/ChainTest.java
@@ -180,6 +180,7 @@ public class ChainTest {
B.setDebugName("B");
root.add(A);
root.add(B);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_NONE);
A.connect(ConstraintAnchor.Type.LEFT, root, ConstraintAnchor.Type.LEFT);
A.connect(ConstraintAnchor.Type.RIGHT, B, ConstraintAnchor.Type.LEFT);
B.connect(ConstraintAnchor.Type.LEFT, A, ConstraintAnchor.Type.RIGHT);
@@ -279,6 +280,120 @@ public class ChainTest {
assertEquals(A.getWidth() + B.getWidth(), root.getWidth());
}
+ /**
+ * testPackChain with current Chain Optimizations.
+ */
+ @Test
+ public void testPackChainOpt() {
+ ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 600, 600);
+ ConstraintWidget A = new ConstraintWidget(100, 20);
+ ConstraintWidget B = new ConstraintWidget(100, 20);
+ root.setDebugName("root");
+ A.setDebugName("A");
+ B.setDebugName("B");
+ root.add(A);
+ root.add(B);
+ root.setOptimizationLevel(Optimizer.OPTIMIZATION_DIRECT | Optimizer.OPTIMIZATION_BARRIER
+ | Optimizer.OPTIMIZATION_CHAIN);
+ A.connect(ConstraintAnchor.Type.LEFT, root, ConstraintAnchor.Type.LEFT);
+ A.connect(ConstraintAnchor.Type.RIGHT, B, ConstraintAnchor.Type.LEFT);
+ B.connect(ConstraintAnchor.Type.LEFT, A, ConstraintAnchor.Type.RIGHT);
+ B.connect(ConstraintAnchor.Type.RIGHT, root, ConstraintAnchor.Type.RIGHT);
+ A.setHorizontalChainStyle(ConstraintWidget.CHAIN_PACKED);
+ root.layout();
+ System.out.println("a) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), 100);
+ assertEquals(B.getWidth(), 100);
+ assertEquals(A.getLeft(), root.getWidth() - B.getRight());
+ assertEquals(B.getLeft(), A.getLeft() + A.getWidth());
+ A.setVisibility(ConstraintWidget.GONE);
+ root.layout();
+ System.out.println("b) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), 0);
+ assertEquals(B.getWidth(), 100);
+ assertEquals(A.getLeft(), root.getWidth() - B.getRight());
+ assertEquals(B.getLeft(), A.getLeft() + A.getWidth());
+ B.setVisibility(ConstraintWidget.GONE);
+ root.layout();
+ System.out.println("c) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), 0);
+ assertEquals(B.getWidth(), 0);
+ assertEquals(A.getLeft(), 300);
+ assertEquals(B.getLeft(), A.getLeft() + A.getWidth());
+ A.setVisibility(ConstraintWidget.VISIBLE);
+ A.setWidth(100);
+ root.layout();
+ System.out.println("d) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), 100);
+ assertEquals(B.getWidth(), 0);
+ assertEquals(A.getLeft(), root.getWidth() - B.getRight());
+ assertEquals(B.getLeft(), A.getLeft() + A.getWidth());
+ A.setVisibility(ConstraintWidget.VISIBLE);
+ A.setWidth(100);
+ A.setHeight(20);
+ B.setVisibility(ConstraintWidget.VISIBLE);
+ B.setWidth(100);
+ B.setHeight(20);
+ B.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
+ B.setHorizontalMatchStyle(ConstraintWidget.MATCH_CONSTRAINT_WRAP, 0, 0, 1);
+ root.layout();
+ System.out.println("e) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), 100);
+ assertEquals(B.getWidth(), 100);
+ assertEquals(A.getLeft(), root.getWidth() - B.getRight());
+ assertEquals(B.getLeft(), A.getLeft() + A.getWidth());
+ B.setHorizontalMatchStyle(ConstraintWidget.MATCH_CONSTRAINT_SPREAD, 0, 0, 1);
+ root.layout();
+ System.out.println("f) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), 100);
+ assertEquals(B.getWidth(), 500);
+ assertEquals(A.getLeft(), 0);
+ assertEquals(B.getLeft(), 100);
+ B.setHorizontalMatchStyle(ConstraintWidget.MATCH_CONSTRAINT_SPREAD, 0, 50, 1);
+ root.layout();
+ System.out.println("g) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), 100);
+ assertEquals(B.getWidth(), 50);
+ assertEquals(A.getLeft(), root.getWidth() - B.getRight());
+ assertEquals(B.getLeft(), A.getLeft() + A.getWidth());
+ B.setHorizontalMatchStyle(ConstraintWidget.MATCH_CONSTRAINT_PERCENT, 0, 0, 0.3f);
+ root.layout();
+ System.out.println("h) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), 100);
+ assertEquals(B.getWidth(), (int) (0.3f * 600));
+ assertEquals(A.getLeft(), root.getWidth() - B.getRight());
+ assertEquals(B.getLeft(), A.getLeft() + A.getWidth());
+ B.setDimensionRatio("16:9");
+ B.setHorizontalMatchStyle(ConstraintWidget.MATCH_CONSTRAINT_RATIO, 0, 0, 1);
+ root.layout();
+ System.out.println("i) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), 100);
+ assertEquals(B.getWidth(), (int)(16f/9f*20), 1);
+ assertEquals(A.getLeft(), root.getWidth() - B.getRight(), 1);
+ assertEquals(B.getLeft(), A.getLeft() + A.getWidth());
+ A.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
+ A.setHorizontalMatchStyle(ConstraintWidget.MATCH_CONSTRAINT_SPREAD, 0, 0, 1);
+ B.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT);
+ B.setHorizontalMatchStyle(ConstraintWidget.MATCH_CONSTRAINT_SPREAD, 0, 0, 1);
+ B.setDimensionRatio(0, 0);
+ A.setVisibility(ConstraintWidget.VISIBLE);
+ A.setWidth(100);
+ A.setHeight(20);
+ B.setVisibility(ConstraintWidget.VISIBLE);
+ B.setWidth(100);
+ B.setHeight(20);
+ root.layout();
+ System.out.println("j) A: " + A + " B: " + B);
+ assertEquals(A.getWidth(), B.getWidth());
+ assertEquals(A.getWidth() + B.getWidth(), root.getWidth());
+ A.setHorizontalWeight(1);
+ B.setHorizontalWeight(3);
+ root.layout();
+ System.out.println("k) A: " + A + " B: " + B);
+ assertEquals(A.getWidth() * 3, B.getWidth());
+ assertEquals(A.getWidth() + B.getWidth(), root.getWidth());
+ }
+
@Test
public void testSpreadChain() {
ConstraintWidgetContainer root = new ConstraintWidgetContainer(0, 0, 600, 600);