import unittest from cdecimal import Decimal import numpy as np from bmfstock import Paper, PaperItem class TestItemPaper(unittest.TestCase): def test_str(self): item = PaperItem('petr4') self.assertEqual(item.paper.code, 'PETR4') def test_paper(self): paper = Paper('petr4') item = PaperItem(paper) self.assertIs(item.paper, paper) self.assertIs(item.value, None) item.value = '2.23' self.assertNotEqual(item.value, None) item.paper = 'petrf22' self.assertEqual(item.paper.code, 'PETRF22') self.assertNotEqual(item.paper, paper) self.assertIs(item.value, None) def test_calculate(self): petr4 = PaperItem('petr4') petr4.value = '25.27' petrf25 = PaperItem('petrf25') petrf25.paper.strike = '25.00' petrf25.value = '0.66' petrf25.buy = False arange = np.arange(0, 100, Decimal('0.01')) c1 = petr4.calculate(arange) c2 = petrf25.calculate(arange) cs = np.array([c1, c2]).sum(axis=0) lucro_max = cs.argmax() / 100. self.assertEqual(25.00, lucro_max)