Sha256: 9dc702d96e835360bb015b70cb0eac4b986ac5fb7b58830ce13584d8e9db0dfb

Contents?: true

Size: 1.69 KB

Versions: 68

Compression:

Stored size: 1.69 KB

Contents

(* Test/exercise version: "1.1.0" *)

open Base
open OUnit2
open Change

let printer = Option.value_map ~default:"None" ~f:(fun xs -> String.concat ~sep:";" (List.map ~f:Int.to_string xs))
let ae exp got _test_ctxt = assert_equal ~printer exp got

let tests = [
   "single coin change" >::
     ae (Some [25]) 
       (make_change ~target:25 ~coins:[1; 5; 10; 25; 100]);
   "multiple coin change" >::
     ae (Some [5; 10]) 
       (make_change ~target:15 ~coins:[1; 5; 10; 25; 100]);
   "change with Lilliputian Coins" >::
     ae (Some [4; 4; 15]) 
       (make_change ~target:23 ~coins:[1; 4; 15; 20; 50]);
   "change with Lower Elbonia Coins" >::
     ae (Some [21; 21; 21]) 
       (make_change ~target:63 ~coins:[1; 5; 10; 21; 25]);
   "large target values" >::
     ae (Some [2; 2; 5; 20; 20; 50; 100; 100; 100; 100; 100; 100; 100; 100; 100]) 
       (make_change ~target:999 ~coins:[1; 2; 5; 10; 20; 50; 100]);
   "possible change without unit coins available" >::
     ae (Some [2; 2; 2; 5; 10]) 
       (make_change ~target:21 ~coins:[2; 5; 10; 20; 50]);
   "another possible change without unit coins available" >::
     ae (Some [4; 4; 4; 5; 5; 5]) 
       (make_change ~target:27 ~coins:[4; 5]);
   "no coins make 0 change" >::
     ae (Some []) 
       (make_change ~target:0 ~coins:[1; 5; 10; 21; 25]);
   "error testing for change smaller than the smallest of coins" >::
     ae None 
       (make_change ~target:3 ~coins:[5; 10]);
   "error if no combination can add up to target" >::
     ae None 
       (make_change ~target:94 ~coins:[5; 10]);
   "cannot find negative change values" >::
     ae None 
       (make_change ~target:(-5) ~coins:[1; 2; 5]);
]

let () =
  run_test_tt_main ("change tests" >::: tests)

Version data entries

68 entries across 68 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.179 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.178 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.177 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.176 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.175 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.174 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.173 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.172 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.171 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.170 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.169 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.167 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.166 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.165 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.164 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.163 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.162 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.161 tracks/ocaml/exercises/change/test.ml
trackler-2.2.1.160 tracks/ocaml/exercises/change/test.ml