Package fj.demo.test

Source Code of fj.demo.test.StringBuilderReverse

package fj.demo.test;

import fj.F;
import fj.F2;
import static fj.data.List.list;
import static fj.Equal.stringBuilderEqual;
import static fj.test.Arbitrary.arbCharacter;
import static fj.test.Arbitrary.arbStringBuilder;
import static fj.test.CheckResult.summary;

import fj.function.Effect1;
import fj.test.Property;
import static fj.test.Property.prop;
import static fj.test.Property.property;

/*
Tests three properties about the StringBuilder.reverse method:
1) Calling reverse, then reverse again results in the same value.
2) Calling reverse on a StringBuilder with only one character results in the same value.
3) Appending two StringBuilders, x and y, then reversing, is the same as reversing the second
   StringBuilder (y) and appending the reverse of the first StringBuilder (x).
*/
public final class StringBuilderReverse {
  public static void main(final String[] args) {
    final Property p1 = property(arbStringBuilder, new F<StringBuilder, Property>() {
      public Property f(final StringBuilder sb) {
        return prop(stringBuilderEqual.eq(new StringBuilder(sb), sb.reverse().reverse()));
      }
    });

    final Property p2 = property(arbCharacter, new F<Character, Property>() {
      public Property f(final Character c) {
        return prop(stringBuilderEqual.eq(new StringBuilder().append(c), new StringBuilder().append(c).reverse()));
      }
    });
   
    final Property p3 = property(arbStringBuilder, arbStringBuilder, new F2<StringBuilder, StringBuilder, Property>() {
      public Property f(final StringBuilder x, final StringBuilder y) {
        // copy the string builders before performing updates on x and y.
        final StringBuilder xx = new StringBuilder(x);
        final StringBuilder yy = new StringBuilder(y);
        return prop(stringBuilderEqual.eq(x.append(y).reverse(), yy.reverse().append(xx.reverse())));
      }
    });

    //OK, passed 100 tests.
    //OK, passed 100 tests.
    //OK, passed 100 tests.
    list(p1, p2, p3).foreachDoEffect(new Effect1<Property>() {
        public void f(final Property p) {
            summary.println(p.check());
        }
    });
  }
}
TOP

Related Classes of fj.demo.test.StringBuilderReverse

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.