simy4 / coregex   1.0.11

Apache License 2.0 GitHub

A handy utility for generating strings that match given regular expression criteria.

Scala versions: 3.x 2.13

coregex

Build Status codecov License

Maven Central Javadocs

A handy utility for generating strings that match given regular expression criteria.

Supported generators

Usage

Functionaljava Quickcheck

Include the following dependency into your project:

testImplementation "com.github.simy4.coregex:coregex-functionaljava-quickcheck"

Use the provided CoregexArbirary class to generate a string that would match the regular expression predicate:

@RunWith(PropertyTestRunner.class)
public class MyTest {
  public Property myProperty() {
    return property(CoregexArbitrary.of("[a-zA-Z]{3}"), str -> prop(3 == str.length()));
  }
}

Jqwik

Include the following dependency into your project:

testImplementation "com.github.simy4.coregex:coregex-jqwik"

Use the provided Regex annotation to generate a string that would match the regular expression predicate:

class MyTest {
  @Property
  void myProperty(@ForAll @Regex("[a-zA-Z]{3}") String str) {
    assertThat(str).hasLength(3);
  }
}

JUnit Quickcheck

Include the following dependency into your project:

testImplementation "com.github.simy4.coregex:coregex-junit-quickcheck"

Use the provided Regex annotation to generate a string that would match the regular expression predicate:

@RunWith(JUnitQuickcheck.class)
public class MyTest {
  @Property
  public void myProperty(@Regex("[a-zA-Z]{3}") String str) {
    assertThat(str).hasLength(3);
  }
}

Kotest

Include the following dependency into your project:

testImplementation "com.github.simy4.coregex:coregex-kotest"

Use the provided CoregexArbirary class to generate a string that would match the regular expression predicate:

class MyTest : DescribeSpec({
  describe("my property") {
    it("should hold") {
      checkAll(CoregexArbitrary.of("[a-zA-Z]{3}")) { str ->
        str.length shouldBe 3
      }
    }
  }
})

scalacheck

Include the following dependency into your project:

libraryDependencies ++= Seq("com.github.simy4.coregex" %% "coregex-scalacheck" % Test)

Use the provided CoregexInstances trait to constrain string arbitraries:

object MySpecification extends Properties("MySpecification") with CoregexInstances {
  property("my property") = forAll { (str: String Matching "[a-zA-Z]{3}") =>
    3 == str.length  
  }
}

vavr test

Include the following dependency into your project:

testImplementation "com.github.simy4.coregex:coregex-vavr-test"

Use the provided CoregexArbirary class to generate a string that would match the regular expression predicate:

class MyTest {
  @Test
  void myProperty() {
    Property.def("my property")
        .forAll(CoregexArbitrary.of("[a-zA-Z]{3}"))
        .suchThat(str -> 3 == str.length())
        .check();
  }
}