Skip to content

Commit

Permalink
fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
inoas committed Jan 1, 2025
1 parent 1a519d3 commit 0db91fa
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 89 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

<!-- ## [Unreleased] -->

## [4.0.1] - 2025-01-01

- Improved unit tests.
- Improved examples.
- Improved readme.

## [4.0.0] - 2025-01-01

Bugfix release of 3.0.2 but containing breaking change:
Expand Down
42 changes: 20 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ pub fn not_given_example() {
pub fn given_ok_in_example() {
let a_result = Ok("Hello Joe!")
use ok_value <- given.ok_in(a_result, else_return: fn(error_value) {
error_value
use ok_value <- given.ok_in(result: a_result, else_return: fn(_error_value) {
"Error value"
})
// …handle Ok value here…
Expand All @@ -68,8 +68,8 @@ pub fn given_ok_in_example() {
pub fn given_error_in_example() {
let a_result = Error("Memory exhausted!")
use error_value <- given.error_in(a_result, else_return: fn(ok_value) {
ok_value
use error_value <- given.error_in(a_result, else_return: fn(_ok_value) {
"Ok value"
})
// …handle Error value here…
Expand All @@ -89,56 +89,54 @@ pub fn given_some_in_example() {
pub fn given_none_in_example() {
let an_option = None
use <- given.none_in(an_option, else_return: fn(some_value) { some_value })
use <- given.none_in(an_option, else_return: fn(_some_value) { "Some value" })
// …handle None here…
"Nothing at all"
"None, e.g. Nothing at all"
}
pub fn given_none_in_another_example() {
let an_option = None
use else_some_value <- given.none_in(an_option, return: fn() { "None here" })
use _else_some_value <- given.none_in(an_option, return: fn() { "None here" })
// …handle Some value here…
else_some_value
"Some value here"
}
import gleam/io
pub fn main() {
given_example() |> io.debug()
given_example() |> io.debug
// "🤯 Woof!"
not_given_example() |> io.debug()
not_given_example() |> io.debug
// "👌 Access granted..."
given_ok_in_example() |> io.debug()
given_ok_in_example() |> io.debug
// "Hello Joe!"
given_error_in_example() |> io.debug()
given_error_in_example() |> io.debug
// "Memory exhausted!"
given_some_in_example() |> io.debug()
given_some_in_example() |> io.debug
// "One Penny"
given_none_in_example() |> io.debug()
// "Nothing at all"
given_none_in_example() |> io.debug
// "None, e.g. Nothing at all"
}
```

Further documentation can be found at <https://hexdocs.pm/given>.

## Development
### Run usage examples

```sh
gleam run # Run the project
gleam test # Run the tests
gleam run --module given/internal/usage_examples
```

### Run examples
## Development

```sh
gleam run --module given/internal/examples
gleam run # Run the project
gleam test # Run the tests
```
2 changes: 1 addition & 1 deletion gleam.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name = "given"
version = "4.0.0"
version = "4.0.1"

# Fill out these fields if you intend to generate HTML documentation or publish
# your project to the Hex package manager.
Expand Down
30 changes: 15 additions & 15 deletions src/given/internal/examples.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ pub fn not_given_example() {

pub fn given_ok_in_example() {
let a_result = Ok("Hello Joe!")
use ok_value <- given.ok_in(a_result, else_return: fn(error_value) {
error_value
use ok_value <- given.ok_in(result: a_result, else_return: fn(_error_value) {
"Error value"
})

// …handle Ok value here…
Expand All @@ -32,8 +32,8 @@ pub fn given_ok_in_example() {

pub fn given_error_in_example() {
let a_result = Error("Memory exhausted!")
use error_value <- given.error_in(a_result, else_return: fn(ok_value) {
ok_value
use error_value <- given.error_in(a_result, else_return: fn(_ok_value) {
"Ok value"
})
// …handle Error value here…

Expand All @@ -53,40 +53,40 @@ pub fn given_some_in_example() {

pub fn given_none_in_example() {
let an_option = None
use <- given.none_in(an_option, else_return: fn(some_value) { some_value })
use <- given.none_in(an_option, else_return: fn(_some_value) { "Some value" })

// …handle None here…

"Nothing at all"
"None, e.g. Nothing at all"
}

pub fn given_none_in_another_example() {
let an_option = None
use else_some_value <- given.none_in(an_option, return: fn() { "None here" })
use _else_some_value <- given.none_in(an_option, return: fn() { "None here" })

// …handle Some value here…

else_some_value
"Some value here"
}

import gleam/io

pub fn main() {
given_example() |> io.debug()
given_example() |> io.debug
// "🤯 Woof!"

not_given_example() |> io.debug()
not_given_example() |> io.debug
// "👌 Access granted..."

given_ok_in_example() |> io.debug()
given_ok_in_example() |> io.debug
// "Hello Joe!"

given_error_in_example() |> io.debug()
given_error_in_example() |> io.debug
// "Memory exhausted!"

given_some_in_example() |> io.debug()
given_some_in_example() |> io.debug
// "One Penny"

given_none_in_example() |> io.debug()
// "Nothing at all"
given_none_in_example() |> io.debug
// "None, e.g. Nothing at all"
}
102 changes: 51 additions & 51 deletions test/given_test.gleam
Original file line number Diff line number Diff line change
Expand Up @@ -7,138 +7,138 @@ pub fn main() {
gleeunit.main()
}

const great = "Great! ✨"
const ok_great = "Great! ✨"

const woof = "Woof! 🐶"
const error_woof = "Woof! 🐶"

pub fn given_test() {
{
let user_understood = False
use <- given(user_understood, return: fn() { great })
use <- given(user_understood, return: fn() { ok_great })
// …else user handles case where user did not understand here…
woof
error_woof
}
|> should.equal(woof)
|> should.equal(error_woof)

{
let user_understood = True
use <- given(user_understood, return: fn() { great })
use <- given(user_understood, return: fn() { ok_great })
// …else user handles case where user did not understand here…
woof
error_woof
}
|> should.equal(great)
|> should.equal(ok_great)
}

pub fn not_given_test() {
{
let user_understood = False
use <- not_given(user_understood, return: fn() { great })
use <- not_given(user_understood, return: fn() { ok_great })
// …else user handles case where user understood here…
woof
error_woof
}
|> should.equal(great)
|> should.equal(ok_great)

{
let user_understood = True
use <- not_given(user_understood, return: fn() { great })
use <- not_given(user_understood, return: fn() { ok_great })
// …else user handles case where user understood here…
woof
error_woof
}
|> should.equal(woof)
|> should.equal(error_woof)
}

pub fn given_ok_in_test() {
{
let result = Ok(great)
let result = Ok(ok_great)
use ok_value <- given.ok_in(result, else_return: fn(error_value) {
error_value
})
// …user handles Ok value here…
ok_value
}
|> should.equal(great)
|> should.equal(ok_great)

{
let result = Error(woof)
let result = Error(error_woof)
use ok_value <- given.ok_in(result, else_return: fn(error_value) {
error_value
})
// …user handles Ok value here…
ok_value
}
|> should.equal(woof)
|> should.equal(error_woof)
}

pub fn given_ok_in_unusual_usage_test() {
{
let result = Ok(great)
use error_value <- given.ok_in(result, return: fn(ok_value) { ok_value })
let result = Ok(ok_great)
use _error_value <- given.ok_in(result, return: fn(_ok_value) { ok_great })
// …user handles Error value here…
error_value
error_woof
}
|> should.equal(great)
|> should.equal(ok_great)

{
let result = Error(woof)
use error_value <- given.ok_in(result, return: fn(ok_value) { ok_value })
let result = Error(error_woof)
use _error_value <- given.ok_in(result, return: fn(_ok_value) { ok_great })
// …user handles Error value here…
error_value
error_woof
}
|> should.equal(woof)
|> should.equal(error_woof)
}

pub fn given_error_in_test() {
{
let result = Error(woof)
use error_value <- given.error_in(result, else_return: fn(ok_value) {
ok_value
let result = Error(error_woof)
use _error_value <- given.error_in(result, else_return: fn(_ok_value) {
ok_great
})
// …user handles Error value here…
error_value
error_woof
}
|> should.equal(woof)
|> should.equal(error_woof)

{
let result = Ok(great)
use error_value <- given.error_in(result, else_return: fn(ok_value) {
ok_value
let result = Ok(ok_great)
use _error_value <- given.error_in(result, else_return: fn(_ok_value) {
ok_great
})
// …user handles Error value here…
error_value
error_woof
}
|> should.equal(great)
|> should.equal(ok_great)
}

pub fn given_some_in_test() {
{
let option = Some(great)
use some_value <- given.some_in(option, else_return: fn() { woof })
let option = Some(ok_great)
use _some_value <- given.some_in(option, else_return: fn() { error_woof })
// …user handles Some value here…
some_value
ok_great
}
|> should.equal(great)
|> should.equal(ok_great)

{
let option = Some(great)
use some_value <- given.some_in(option, else_return: fn() { woof })
let option = Some(ok_great)
use _some_value <- given.some_in(option, else_return: fn() { error_woof })
// …user handles Some value here…
some_value
ok_great
}
|> should.equal(great)
|> should.equal(ok_great)
}

pub fn given_none_in_test() {
{
let option = Some(great)
use <- given.none_in(option, else_return: fn(some_value) { some_value })
let option = Some(ok_great)
use <- given.none_in(option, else_return: fn(_some_value) { ok_great })
// …user handles None here…
woof
error_woof
}
|> should.equal(great)
|> should.equal(ok_great)

{
let option = None
use <- given.none_in(option, else_return: fn(some_value) { some_value })
use <- given.none_in(option, else_return: fn(_some_value) { ok_great })
// …user handles None here…
"None encountered!"
}
Expand All @@ -147,12 +147,12 @@ pub fn given_none_in_test() {

pub fn given_none_in_2nd_test() {
{
let option = Some(great)
let option = Some(ok_great)
use some_value <- given.none_in(option, return: fn() { "None encountered!" })
// …user handles Some value here…
some_value
}
|> should.equal(great)
|> should.equal(ok_great)

{
let option = None
Expand Down

0 comments on commit 0db91fa

Please sign in to comment.