Пример #1
0
 /**
  * Like {@link #measure} and {@link #measureLayout} but measures relative to the immediate parent.
  */
 public void measureLayoutRelativeToParent(
     int tag, Callback errorCallback, Callback successCallback) {
   try {
     measureLayoutRelativeToParent(tag, mMeasureBuffer);
     float relativeX = PixelUtil.toDIPFromPixel(mMeasureBuffer[0]);
     float relativeY = PixelUtil.toDIPFromPixel(mMeasureBuffer[1]);
     float width = PixelUtil.toDIPFromPixel(mMeasureBuffer[2]);
     float height = PixelUtil.toDIPFromPixel(mMeasureBuffer[3]);
     successCallback.invoke(relativeX, relativeY, width, height);
   } catch (IllegalViewOperationException e) {
     errorCallback.invoke(e.getMessage());
   }
 }
  @Test
  public void testSettingDefaultStyleValues() {
    mockStatic(PixelUtil.class);
    when(PixelUtil.toPixelFromDIP(anyFloat()))
        .thenAnswer(
            new Answer() {
              @Override
              public Float answer(InvocationOnMock invocation) throws Throwable {
                Object[] args = invocation.getArguments();
                return (Float) args[0];
              }
            });

    LayoutShadowNode[] nodes = new LayoutShadowNode[7];
    for (int idx = 0; idx < nodes.length; idx++) {
      nodes[idx] = new LayoutShadowNode();
      nodes[idx].setDefaultPadding(Spacing.LEFT, 15);
      nodes[idx].setDefaultPadding(Spacing.TOP, 25);
      nodes[idx].setDefaultPadding(Spacing.RIGHT, 35);
      nodes[idx].setDefaultPadding(Spacing.BOTTOM, 45);
    }

    ReactStylesDiffMap[] mapNodes = new ReactStylesDiffMap[7];
    mapNodes[0] = buildStyles("paddingLeft", 10.0, "paddingHorizontal", 5.0);
    mapNodes[1] = buildStyles("padding", 10.0, "paddingTop", 5.0);
    mapNodes[2] = buildStyles("paddingLeft", 10.0, "paddingVertical", 5.0);
    mapNodes[3] = buildStyles("paddingBottom", 10.0, "paddingHorizontal", 5.0);
    mapNodes[4] = buildStyles("padding", null, "paddingTop", 5.0);
    mapNodes[5] =
        buildStyles(
            "paddingRight", 10.0,
            "paddingHorizontal", null,
            "paddingVertical", 7.0);
    mapNodes[6] = buildStyles("margin", 5.0);

    for (int idx = 0; idx < nodes.length; idx++) {
      nodes[idx].updateProperties(mapNodes[idx]);
    }

    assertEquals(10.0, nodes[0].getPadding().get(Spacing.LEFT), .0001);
    assertEquals(25.0, nodes[0].getPadding().get(Spacing.TOP), .0001);
    assertEquals(5.0, nodes[0].getPadding().get(Spacing.RIGHT), .0001);
    assertEquals(45.0, nodes[0].getPadding().get(Spacing.BOTTOM), .0001);

    assertEquals(10.0, nodes[1].getPadding().get(Spacing.LEFT), .0001);
    assertEquals(5.0, nodes[1].getPadding().get(Spacing.TOP), .0001);
    assertEquals(10.0, nodes[1].getPadding().get(Spacing.RIGHT), .0001);
    assertEquals(10.0, nodes[1].getPadding().get(Spacing.BOTTOM), .0001);

    assertEquals(10.0, nodes[2].getPadding().get(Spacing.LEFT), .0001);
    assertEquals(5.0, nodes[2].getPadding().get(Spacing.TOP), .0001);
    assertEquals(35.0, nodes[2].getPadding().get(Spacing.RIGHT), .0001);
    assertEquals(5.0, nodes[2].getPadding().get(Spacing.BOTTOM), .0001);

    assertEquals(5.0, nodes[3].getPadding().get(Spacing.LEFT), .0001);
    assertEquals(25.0, nodes[3].getPadding().get(Spacing.TOP), .0001);
    assertEquals(5.0, nodes[3].getPadding().get(Spacing.RIGHT), .0001);
    assertEquals(10.0, nodes[3].getPadding().get(Spacing.BOTTOM), .0001);

    assertEquals(15.0, nodes[4].getPadding().get(Spacing.LEFT), .0001);
    assertEquals(5.0, nodes[4].getPadding().get(Spacing.TOP), .0001);
    assertEquals(35.0, nodes[4].getPadding().get(Spacing.RIGHT), .0001);
    assertEquals(45.0, nodes[4].getPadding().get(Spacing.BOTTOM), .0001);

    assertEquals(15.0, nodes[5].getPadding().get(Spacing.LEFT), .0001);
    assertEquals(7.0, nodes[5].getPadding().get(Spacing.TOP), .0001);
    assertEquals(10.0, nodes[5].getPadding().get(Spacing.RIGHT), .0001);
    assertEquals(7.0, nodes[5].getPadding().get(Spacing.BOTTOM), .0001);

    assertEquals(15.0, nodes[6].getPadding().get(Spacing.LEFT), .0001);
    assertEquals(25.0, nodes[6].getPadding().get(Spacing.TOP), .0001);
    assertEquals(35.0, nodes[6].getPadding().get(Spacing.RIGHT), .0001);
    assertEquals(45.0, nodes[6].getPadding().get(Spacing.BOTTOM), .0001);
  }