Skip to content

Commit

Permalink
Close #287 - [refined4s-extras-render] Add extras-render support for …
Browse files Browse the repository at this point in the history
…NonBlankString
  • Loading branch information
kevin-lee committed Apr 8, 2024
1 parent a4d1104 commit 4288a1c
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ trait all {
inline given derivedNonEmptyStringRender(using renderActual: Render[String]): Render[NonEmptyString] =
renderActual.contramap(_.value)

inline given derivedNonBlankStringRender(using renderActual: Render[String]): Render[NonBlankString] =
renderActual.contramap(_.value)

inline given derivedUuidRender(using renderActual: Render[String]): Render[Uuid] =
renderActual.contramap(_.value)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import refined4s.modules.extras.derivation.generic.auto.given
import refined4s.types.all.*
import refined4s.types.networkGens

import java.nio.charset.StandardCharsets

/** @author Kevin Lee
* @since 2024-01-01
*/
Expand Down Expand Up @@ -81,6 +83,8 @@ object autoSpec extends Properties {
//
property("test Render[NonEmptyString]", testRenderNonEmptyString),
//
property("test Render[NonBlankString]", testRenderNonBlankString),
//
property("test Render[Uri]", testRenderUri),

//
Expand Down Expand Up @@ -495,6 +499,29 @@ object autoSpec extends Properties {
actual ==== expected
}

def testRenderNonBlankString: Property =
for {
nonWhitespaceString <- Gen
.string(hedgehog.extra.Gens.genNonWhitespaceChar, Range.linear(1, 10))
.map(s => new String(s.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8))
.log("nonWhitespaceString")
whitespaceString <- Gen
.string(
hedgehog.extra.Gens.genCharByRange(refined4s.types.strings.WhitespaceCharRange),
Range.linear(1, 10),
)
.log("whitespaceString")

s <- Gen.constant(scala.util.Random.shuffle((nonWhitespaceString + whitespaceString).toList).mkString).log("s")
} yield {
val input = NonBlankString.unsafeFrom(s)

val expected = s
val actual = input.render

actual ==== expected
}

def testRenderUri: Property =
for {
uri <- networkGens.genUriString.log("uri")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import refined4s.modules.extras.derivation.types.all.given
import refined4s.types.all.*
import refined4s.types.networkGens

import java.nio.charset.StandardCharsets
import java.util.UUID

/** @author Kevin Lee
Expand Down Expand Up @@ -82,6 +83,8 @@ object allSpec extends Properties {
//
property("test Render[NonEmptyString]", testRenderNonEmptyString),
//
property("test Render[NonBlankString]", testRenderNonBlankString),
//
property("test Render[Uuid]", testRenderUuid),
//
property("test Render[Uri]", testRenderUri),
Expand Down Expand Up @@ -496,6 +499,29 @@ object allSpec extends Properties {
actual ==== expected
}

def testRenderNonBlankString: Property =
for {
nonWhitespaceString <- Gen
.string(hedgehog.extra.Gens.genNonWhitespaceChar, Range.linear(1, 10))
.map(s => new String(s.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8))
.log("nonWhitespaceString")
whitespaceString <- Gen
.string(
hedgehog.extra.Gens.genCharByRange(refined4s.types.strings.WhitespaceCharRange),
Range.linear(1, 10),
)
.log("whitespaceString")

s <- Gen.constant(scala.util.Random.shuffle((nonWhitespaceString + whitespaceString).toList).mkString).log("s")
} yield {
val input = NonBlankString.unsafeFrom(s)

val expected = s
val actual = input.render

actual ==== expected
}

def testRenderUuid: Property =
for {
uuid <- Gen.constant(UUID.randomUUID()).log("uuid")
Expand Down

0 comments on commit 4288a1c

Please sign in to comment.