Ejemplo n.º 1
0
  /** Tests that trigger is called after the value is changed */
  public void testValueChange() {
    final MyProperties props = new MyProperties();

    String path = "test.mondrian.properties.change.value";
    BooleanProperty boolProp = new BooleanProperty(props, path, false);

    assertTrue("Check property value NOT false", !boolProp.get());

    // set via the 'set' method
    final boolean prevBoolean = boolProp.set(true);
    assertEquals(false, prevBoolean);

    // now explicitly set the property
    final Object prevObject = props.setProperty(path, "false");
    assertEquals("true", prevObject);

    String v = props.getProperty(path);
    assertTrue("Check property value is null", v != null);
    assertTrue("Check property value is true", (!Boolean.valueOf(v).booleanValue()));

    final State state = new State();
    state.triggerCalled = false;
    state.triggerValue = null;

    final Trigger trigger =
        new Trigger() {
          public boolean isPersistent() {
            return false;
          }

          public int phase() {
            return Trigger.PRIMARY_PHASE;
          }

          public void execute(Property property, String value) {
            state.triggerCalled = true;
            state.triggerValue = value;
          }
        };
    boolProp.addTrigger(trigger);

    String falseStr = "false";
    props.setProperty(path, falseStr);
    assertTrue("Check trigger was called", !state.triggerCalled);

    String trueStr = "true";
    props.setProperty(path, trueStr);

    assertTrue("Check trigger was NOT called", state.triggerCalled);
    assertTrue("Check trigger value was null", (state.triggerValue != null));
    assertTrue("Check trigger value is NOT correct", state.triggerValue.equals(trueStr));
  }