Skip to content

Instantly share code, notes, and snippets.

@alcidesfp
Created July 31, 2012 05:46
Show Gist options
  • Save alcidesfp/3214072 to your computer and use it in GitHub Desktop.
Save alcidesfp/3214072 to your computer and use it in GitHub Desktop.
Kata Números Romanos en Scheme R5 (Kawa y Chicken) Pruebas Unitarias
;; -*- coding: utf-8; mode: scheme -*-
;; $Id: num-roman-test.scm,v 1.2 2012/07/08 00:09:35 alcides_fp Exp $
(cond-expand (chicken (require-extension srfi-64))
(kawa (require 'srfi-64)))
(load "num-roman.scm")
(test-begin "num-roman-suite")
;;------------------------------------------------------------------------
(test-begin "prueba-numerales")
(let ((pruebas '(("I" 1 0)
("II" 2 0)
("III" 3 0)
("IX" 9 0)
("XX" 2 1)
("CC" 2 2)
("XXX" 3 1)
("CCC" 3 2)
("MMM" 3 3)) ))
(for-each (lambda (elem)
(let* ((exp-val (car elem))
(digit (list-ref elem 1))
(pos (list-ref elem 2))
(act-val (numeral digit pos)))
(test-equal act-val exp-val))) pruebas))
(test-end)
;;------------------------------------------------------------------------
(test-begin "prueba-lista-cifras")
;;(test-error #t "Prueba no implementada")
(let* ((numero 1234)
(exp-val '(4 3 2 1))
(act-val (dec->list numero)))
(test-equal act-val exp-val))
(test-end)
;;------------------------------------------------------------------------
(test-begin "prueba-unidades")
(let ((pruebas '(("I" 1)
("II" 2)
("III" 3)
("IV" 4)
("V" 5)
("IX" 9)) ))
(for-each (lambda (elem)
(let* ((exp-val (car elem))
(arabigo (cadr elem))
(act-val (num->roman arabigo)))
(test-equal act-val exp-val))) pruebas))
(test-end)
;;------------------------------------------------------------------------
(test-begin "prueba-decenas")
(let ((pruebas '(("X" 10)
("XII" 12)
("XIX" 19)
("XX" 20)
("XXIII" 23)
("XXXVII" 37)
("LXXXIV" 84)) ))
(for-each (lambda (elem)
(let* ((exp-val (car elem))
(arabigo (cadr elem))
(act-val (num->roman arabigo)))
(test-equal act-val exp-val))) pruebas))
(test-end)
;;------------------------------------------------------------------------
(test-begin "prueba-centenas")
(let ((pruebas '(("C" 100)
("CXXIII" 123)
("CCXIX" 219)
("CDXXIII" 423)
("DCXXXVII" 637)
("DCCCLXXXIV" 884)
("CMXCIX" 999)) ))
(for-each (lambda (elem)
(let* ((exp-val (car elem))
(arabigo (cadr elem))
(act-val (num->roman arabigo)))
(test-equal act-val exp-val))) pruebas))
(test-end)
;;------------------------------------------------------------------------
(test-begin "prueba-millares")
(let ((pruebas '(("MCMLXXIV" 1974)
("MCMLXXXV" 1985)
("MCMXCIX" 1999)
("MMXII" 2012)) ))
(for-each (lambda (elem)
(let* ((exp-val (car elem))
(arabigo (cadr elem))
(act-val (num->roman arabigo)))
(test-equal act-val exp-val))) pruebas))
(test-end)
;;------------------------------------------------------------------------
(test-end "num-roman-suite")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment