File: test_currencies.py

package info (click to toggle)
quantlib-swig 1.40-4
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 2,280 kB
  • sloc: python: 6,024; java: 1,552; cs: 774; makefile: 349; sh: 22
file content (57 lines) | stat: -rw-r--r-- 2,224 bytes parent folder | download | duplicates (2)
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
"""
 Copyright (C) 2021 Marcin Rybacki

 This file is part of QuantLib, a free-software/open-source library
 for financial quantitative analysts and developers - http://quantlib.org/

 QuantLib is free software: you can redistribute it and/or modify it
 under the terms of the QuantLib license.  You should have received a
 copy of the license along with this program; if not, please email
 <quantlib-dev@lists.sf.net>. The license is also available online at
 <https://www.quantlib.org/license.shtml>.

 This program is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 FOR A PARTICULAR PURPOSE.  See the license for more details.
"""

import unittest
import QuantLib as ql


class CurrencyTest(unittest.TestCase):

    def test_default_currency_constructor(self):
        """Testing default currency constructor"""
        fail_msg = "Failed to create default currency."
        default_ccy = ql.Currency()
        self.assertTrue(default_ccy.empty(), fail_msg)

    def test_eur_constructor(self):
        """Testing EUR constructor"""
        fail_msg = "Failed to create EUR currency."
        eur = ql.EURCurrency()
        self.assertFalse(eur.empty(), fail_msg)

    def test_bespoke_currency_constructor(self):
        """Testing bespoke currency constructor"""
        fail_msg = "Failed to create bespoke currency."
        custom_ccy = ql.Currency(
            "CCY", "CCY", 100, "#", "", 100, ql.Rounding())
        self.assertFalse(custom_ccy.empty(), fail_msg)

    def test_hash(self):
        for ccy1 in (ql.EURCurrency(), ql.USDCurrency(), ql.Currency()):
            for ccy2 in (ql.EURCurrency(), ql.USDCurrency(), ql.Currency()):
                if ccy1.empty() or ccy2.empty():
                    expected = ccy1.empty() == ccy2.empty()
                else:
                    expected = ccy1.name() == ccy2.name()
                self.assertEqual(ccy1 == ccy2, expected)
                self.assertEqual(ccy1 != ccy2, not expected)
                self.assertEqual(hash(ccy1) == hash(ccy2), expected)


if __name__ == '__main__':
    print("testing QuantLib", ql.__version__)
    unittest.main(verbosity=2)