aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/core/src/test/java/org/spongycastle/asn1/test/Iso4217CurrencyCodeUnitTest.java
blob: 1c19780448e572d5fd0f0dcdc3890d8cfb5f626f (plain)
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package org.spongycastle.asn1.test;

import org.spongycastle.asn1.ASN1Primitive;
import org.spongycastle.asn1.x509.qualified.Iso4217CurrencyCode;
import org.spongycastle.util.test.SimpleTest;

public class Iso4217CurrencyCodeUnitTest 
    extends SimpleTest
{
    private static final String ALPHABETIC_CURRENCY_CODE = "AUD";
    private static final int    NUMERIC_CURRENCY_CODE = 1;

    public String getName()
    {
        return "Iso4217CurrencyCode";
    }

    public void performTest() 
        throws Exception
    {
        //
        // alphabetic
        //
        Iso4217CurrencyCode cc = new Iso4217CurrencyCode(ALPHABETIC_CURRENCY_CODE);

        checkNumeric(cc, ALPHABETIC_CURRENCY_CODE);
        
        cc = Iso4217CurrencyCode.getInstance(cc);
        
        checkNumeric(cc, ALPHABETIC_CURRENCY_CODE);
        
        ASN1Primitive obj = cc.toASN1Object();
        
        cc = Iso4217CurrencyCode.getInstance(obj);
        
        checkNumeric(cc, ALPHABETIC_CURRENCY_CODE);
        
        //
        // numeric
        //
        cc = new Iso4217CurrencyCode(NUMERIC_CURRENCY_CODE);

        checkNumeric(cc, NUMERIC_CURRENCY_CODE);
        
        cc = Iso4217CurrencyCode.getInstance(cc);
        
        checkNumeric(cc, NUMERIC_CURRENCY_CODE);
        
        obj = cc.toASN1Object();
        
        cc = Iso4217CurrencyCode.getInstance(obj);
        
        checkNumeric(cc, NUMERIC_CURRENCY_CODE);
        
        cc = Iso4217CurrencyCode.getInstance(null);
        
        if (cc != null)
        {
            fail("null getInstance() failed.");
        }
        
        try
        {
            Iso4217CurrencyCode.getInstance(new Object());
            
            fail("getInstance() failed to detect bad object.");
        }
        catch (IllegalArgumentException e)
        {
            // expected
        }
        
        try
        {
            new Iso4217CurrencyCode("ABCD");
            
            fail("constructor failed to detect out of range currencycode.");
        }
        catch (IllegalArgumentException e)
        {
            // expected
        }
        
        try
        {
            new Iso4217CurrencyCode(0);
            
            fail("constructor failed to detect out of range small numeric code.");
        }
        catch (IllegalArgumentException e)
        {
            // expected
        }
        
        try
        {
            new Iso4217CurrencyCode(1000);
            
            fail("constructor failed to detect out of range large numeric code.");
        }
        catch (IllegalArgumentException e)
        {
            // expected
        }
    }

    private void checkNumeric(
        Iso4217CurrencyCode cc,
        String              code)
    {
        if (!cc.isAlphabetic())
        {
            fail("non-alphabetic code found when one expected.");
        }
        
        if (!cc.getAlphabetic().equals(code))
        {
            fail("string codes don't match.");
        }
    }
    
    private void checkNumeric(
        Iso4217CurrencyCode cc,
        int                 code)
    {
        if (cc.isAlphabetic())
        {
            fail("alphabetic code found when one not expected.");
        }
        
        if (cc.getNumeric() != code)
        {
            fail("numeric codes don't match.");
        }
    }
    
    public static void main(
        String[]    args)
    {
        runTest(new Iso4217CurrencyCodeUnitTest());
    }
}