aboutsummaryrefslogtreecommitdiff
path: root/src/tools/roman-numeral-converter/roman-numeral-converter.service.test.ts
blob: 86dccc9228939052766d3a83b0c67983301d277d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { describe, expect, it } from 'vitest';
import { arabicToRoman } from './roman-numeral-converter.service';

describe('roman-numeral-converter', () => {
  describe('arabicToRoman', () => {
    it('should convert numbers lower than 1 to empty string', () => {
      expect(arabicToRoman(-100)).toEqual('');
      expect(arabicToRoman(-42)).toEqual('');
      expect(arabicToRoman(-26)).toEqual('');
      expect(arabicToRoman(-10)).toEqual('');
      expect(arabicToRoman(0)).toEqual('');
      expect(arabicToRoman(0.5)).toEqual('');
      expect(arabicToRoman(0.9)).toEqual('');
    });

    it('should convert numbers greater than 3999 to empty string', () => {
      expect(arabicToRoman(3999.1)).toEqual('');
      expect(arabicToRoman(4000)).toEqual('');
      expect(arabicToRoman(10000)).toEqual('');
    });

    it('should convert floating points number to the lower integer in roman version', () => {
      expect(arabicToRoman(1.1)).toEqual('I');
      expect(arabicToRoman(1.9)).toEqual('I');
      expect(arabicToRoman(17.6)).toEqual('XVII');
      expect(arabicToRoman(29.999)).toEqual('XXIX');
    });

    it('should convert positive integers to roman numbers', () => {
      expect(arabicToRoman(1)).toEqual('I');
      expect(arabicToRoman(2)).toEqual('II');
      expect(arabicToRoman(3)).toEqual('III');
      expect(arabicToRoman(4)).toEqual('IV');
      expect(arabicToRoman(5)).toEqual('V');
      expect(arabicToRoman(6)).toEqual('VI');
      expect(arabicToRoman(7)).toEqual('VII');
      expect(arabicToRoman(8)).toEqual('VIII');
      expect(arabicToRoman(9)).toEqual('IX');
      expect(arabicToRoman(10)).toEqual('X');
      expect(arabicToRoman(11)).toEqual('XI');
      expect(arabicToRoman(12)).toEqual('XII');
      expect(arabicToRoman(13)).toEqual('XIII');
      expect(arabicToRoman(14)).toEqual('XIV');
      expect(arabicToRoman(15)).toEqual('XV');
      expect(arabicToRoman(16)).toEqual('XVI');
      expect(arabicToRoman(17)).toEqual('XVII');
      expect(arabicToRoman(18)).toEqual('XVIII');
      expect(arabicToRoman(19)).toEqual('XIX');
      expect(arabicToRoman(20)).toEqual('XX');
      expect(arabicToRoman(21)).toEqual('XXI');
      expect(arabicToRoman(24)).toEqual('XXIV');
      expect(arabicToRoman(28)).toEqual('XXVIII');
      expect(arabicToRoman(29)).toEqual('XXIX');
      expect(arabicToRoman(30)).toEqual('XXX');
      expect(arabicToRoman(40)).toEqual('XL');
      expect(arabicToRoman(50)).toEqual('L');
      expect(arabicToRoman(60)).toEqual('LX');
      expect(arabicToRoman(70)).toEqual('LXX');
      expect(arabicToRoman(80)).toEqual('LXXX');
      expect(arabicToRoman(90)).toEqual('XC');
      expect(arabicToRoman(100)).toEqual('C');
      expect(arabicToRoman(200)).toEqual('CC');
      expect(arabicToRoman(300)).toEqual('CCC');
      expect(arabicToRoman(400)).toEqual('CD');
      expect(arabicToRoman(500)).toEqual('D');
      expect(arabicToRoman(600)).toEqual('DC');
      expect(arabicToRoman(700)).toEqual('DCC');
      expect(arabicToRoman(800)).toEqual('DCCC');
      expect(arabicToRoman(900)).toEqual('CM');
      expect(arabicToRoman(999)).toEqual('CMXCIX');
      expect(arabicToRoman(1000)).toEqual('M');
      expect(arabicToRoman(2000)).toEqual('MM');
    });
  });
});