diff options
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.java | 115 |
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); |