View difference between Paste ID: S5Q1Qe1p and NtAkNgv8
SHOW: | | - or go back to the newest paste.
1
;; -*- coding: utf-8; mode: scheme -*-
2-
;; num-roman-test.rkt
2+
;; $Id: num-roman-test.rkt,v 1.7 2012/02/04 21:45:32 alcides_fp Exp $
3
#lang racket
4
5
(require rackunit
6
         rackunit/text-ui
7
         "num-roman.rkt")
8
9
(define-test-suite num-roman-suite
10
11
  (test-case "prueba-numerales"
12
     (let ((pruebas '(("I" 1 0)
13
                      ("II" 2 0)
14
                      ("III" 3 0)
15
                      ("IX" 9 0)
16
                      ("XX" 2 1)
17
                      ("CC" 2 2)
18
                      ("XXX" 3 1)
19
                      ("CCC" 3 2)
20
                      ("MMM" 3 3)))
21
           (exp-val "")
22
           (act-val 0)
23
           (digit 0)
24
           (pos 0))
25
       (for ((elem pruebas))
26
            (set! exp-val (car elem))
27
            (set! digit (list-ref elem 1))
28
            (set! pos (list-ref elem 2))
29
            (set! act-val (numeral digit pos))
30
            (check-equal? act-val exp-val) ) ) )
31
  ;;----------------------------------------------------------------------
32
  (test-case "prueba-lista-cifras"
33
   ;;(fail "Prueba no implementada")
34
   (let ((numero 1234)
35
         (exp-val '(4 3 2 1))
36
         (act-val '()))
37
     (set! act-val (dec->list numero))
38
     (check-equal? act-val exp-val)))
39
  ;;----------------------------------------------------------------------
40
  (test-case "prueba-unidades"
41
     (let ((pruebas '(("I" 1)
42
                      ("II" 2)
43
                      ("III" 3)
44
                      ("IV" 4)
45
                      ("V" 5)
46
                      ("IX" 9)) )
47
           (exp-val "")
48
           (act-val "")
49
           (arabigo 0))
50
       (for ((elem pruebas))
51
            (set! exp-val (car elem))
52
            (set! arabigo (cadr elem))
53
            (set! act-val (num-roman arabigo))
54
            (check-equal? act-val exp-val) ) ) )
55
56
  (test-case "prueba-decenas"
57
     (let ((pruebas '(("X" 10)
58
                      ("XII" 12)
59
                      ("XIX" 19)
60
                      ("XX" 20)
61
                      ("XXIII" 23)
62
                      ("XXXVII" 37)
63
                      ("LXXXIV" 84)) )
64
           (exp-val "")
65
           (act-val "")
66
           (arabigo 0))
67
       (for ((elem pruebas))
68
            (set! exp-val (car elem))
69
            (set! arabigo (cadr elem))
70
            (set! act-val (num-roman arabigo))
71
            (check-equal? act-val exp-val) ) ) )
72
73
  (test-case "prueba-centenas"
74
     (let ((pruebas '(("C" 100)
75
                      ("CXXIII" 123)
76
                      ("CCXIX" 219)
77
                      ("CDXXIII" 423)
78
                      ("DCXXXVII" 637)
79
                      ("DCCCLXXXIV" 884)
80
                      ("CMXCIX" 999)) )
81
           (exp-val "")
82
           (act-val "")
83
           (arabigo 0))
84
       (for ((elem pruebas))
85
            (set! exp-val (car elem))
86
            (set! arabigo (cadr elem))
87
            (set! act-val (num-roman arabigo))
88
            (check-equal? act-val exp-val) ) ) )
89
90
  (test-case "prueba-millares"
91
     (let ((pruebas '(("MCMLXXIV" 1974)
92
                      ("MCMLXXXV" 1985)
93
                      ("MCMXCIX" 1999)
94-
            (check-equal? act-val exp-val) ) ) ) 
94+
95
           (exp-val "")
96-
  ;;(test-case "caso prueba 1" 
96+
97-
  ;;  (fail "Prueba no implementada")) 
97+
98-
  )
98+
99
            (set! exp-val (car elem))
100
            (set! arabigo (cadr elem))
101
            (set! act-val (num-roman arabigo))
102
            (check-equal? act-val exp-val) ) ) ) )
103
;;------------------------------------------------------------------------
104
(run-tests num-roman-suite)