Test utils comparable mixin

use "pony_test"
use "../../utils"

class \nodoc\ AlwaysComparesAs is ComparableMixin[AlwaysComparesAs]
  let value: Compare

  new create(value': Compare) =>
    value = value'

  fun compare(that: AlwaysComparesAs box): Compare =>
    value

class TestUtilsComparableMixin is UnitTest
  fun name(): String =>
    "UtilsComparableMixin"

  fun apply(h: TestHelper) =>
    let e = AlwaysComparesAs(Equal)
    h.assert_false(e.lt(e))
    h.assert_true(e.le(e))
    h.assert_false(e.gt(e))
    h.assert_true(e.ge(e))
    h.assert_true(e.eq(e))
    h.assert_false(e.ne(e))

    let g = AlwaysComparesAs(Greater)
    h.assert_false(g.lt(g))
    h.assert_false(g.le(g))
    h.assert_true(g.gt(g))
    h.assert_true(g.ge(g))
    h.assert_false(g.eq(g))
    h.assert_true(g.ne(g))

    let l = AlwaysComparesAs(Less)
    h.assert_true(l.lt(l))
    h.assert_true(l.le(l))
    h.assert_false(l.gt(l))
    h.assert_false(l.ge(l))
    h.assert_false(l.eq(l))
    h.assert_true(l.ne(l))