Skip to content

Commit b26a343

Browse files
author
investingbots
authored
Merge pull request #14 from investingbots/feature_travis_ci
Feature travis ci
2 parents da8d2c6 + 4c800f6 commit b26a343

File tree

11 files changed

+194
-243
lines changed

11 files changed

+194
-243
lines changed

.travis.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
language: python
2+
3+
install:
4+
- pip install -r requirements.txt
5+
6+
script: pytest # run test
7+
8+
after_success:
9+
- codecov # submit coverage

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
# Investing Algorithm Framework
1+
[![Build Status](https://travis-ci.org/investingbots/investing-bot-framework.svg?branch=master)](https://travis-ci.org/investingbots/investing-bot-framework)
2+
3+
# Investing Algorithm Framework
24

35
The Investing Algorithm Framework is a free and open source Python framework that encourages rapid development and clean,
46
pragmatic design.

ci/test.sh

100644100755
File mode changed.
Lines changed: 22 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,34 @@
1-
from typing import Dict, Any
2-
from unittest import TestCase
1+
from investing_bot_framework.tests.core.data.data_providers.resources import TestDataProviderOne, \
2+
TestDataProviderTwo, TestObserver
33

4-
from investing_bot_framework.core.data_providers import DataProvider
5-
from investing_bot_framework.core.events import Observer
64

5+
def test():
6+
data_provider_one = TestDataProviderOne()
77

8-
class TestDataProviderOne(DataProvider):
8+
assert data_provider_one.id is not None
9+
assert data_provider_one.get_id() == TestDataProviderOne.id
910

10-
id = 'TestDataProviderOne'
11+
observer = TestObserver()
12+
data_provider_one.add_observer(observer)
1113

12-
def provide_data(self, **kwargs: Dict[str, Any]) -> Any:
13-
return "data_providers"
14+
# Run the data_providers provider
15+
data_provider_one.start()
1416

17+
# Observer must have been updated
18+
assert observer.update_count == 1
1519

16-
class TestDataProviderTwo(DataProvider):
20+
data_provider_two = TestDataProviderTwo()
1721

18-
id = 'TestDataProviderTwo'
22+
assert data_provider_two.id is not None
23+
assert data_provider_two.get_id() == TestDataProviderTwo.id
1924

20-
def provide_data(self, **kwargs: Dict[str, Any]) -> Any:
21-
return "data_providers"
25+
data_provider_two.add_observer(observer)
2226

27+
# Run the data_providers provider
28+
data_provider_two.start()
2329

24-
class TestObserver(Observer):
30+
# Observer must have been updated
31+
assert observer.update_count == 2
2532

26-
def __init__(self) -> None:
27-
self.update_count = 0
28-
29-
def update(self, observable, **kwargs) -> None:
30-
self.update_count += 1
31-
32-
33-
class DataProviderSetup(TestCase):
34-
35-
def test(self):
36-
data_provider_one = TestDataProviderOne()
37-
38-
self.assertIsNotNone(data_provider_one.id)
39-
self.assertEqual(data_provider_one.get_id(), TestDataProviderOne.id)
40-
41-
observer = TestObserver()
42-
data_provider_one.add_observer(observer)
43-
44-
# Run the data_providers provider
45-
data_provider_one.start()
46-
47-
# Observer must have been updated
48-
self.assertEqual(observer.update_count, 1)
49-
50-
data_provider_two = TestDataProviderTwo()
51-
52-
self.assertIsNotNone(data_provider_two.id)
53-
self.assertEqual(data_provider_two.get_id(), TestDataProviderTwo.id)
54-
55-
data_provider_two.add_observer(observer)
56-
57-
# Run the data_providers provider
58-
data_provider_two.start()
59-
60-
# Observer must have been updated
61-
self.assertEqual(observer.update_count, 2)
62-
63-
# Id´s must be different
64-
self.assertNotEqual(TestDataProviderOne.id, TestDataProviderTwo.id)
33+
# Id´s must be different
34+
assert TestDataProviderOne.id != TestDataProviderTwo.id
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
from typing import Dict, Any
2+
3+
from investing_bot_framework.core.events import Observer
4+
from investing_bot_framework.core.data_providers import DataProvider
5+
6+
7+
class TestDataProviderOne(DataProvider):
8+
9+
id = 'TestDataProviderOne'
10+
11+
def provide_data(self, **kwargs: Dict[str, Any]) -> Any:
12+
return "data_providers"
13+
14+
15+
class TestDataProviderTwo(DataProvider):
16+
17+
id = 'TestDataProviderTwo'
18+
19+
def provide_data(self, **kwargs: Dict[str, Any]) -> Any:
20+
return "data_providers"
21+
22+
23+
class TestObserver(Observer):
24+
25+
def __init__(self) -> None:
26+
self.update_count = 0
27+
28+
def update(self, observable, **kwargs) -> None:
29+
self.update_count += 1
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
from typing import Dict, Any, List
2+
from time import sleep
3+
from wrapt import synchronized
4+
5+
from investing_bot_framework.core.workers import Worker
6+
from investing_bot_framework.core.events.observer import Observer
7+
from investing_bot_framework.core.executors import Executor
8+
9+
10+
class TestObserver(Observer):
11+
12+
def __init__(self) -> None:
13+
self.update_count = 0
14+
15+
@synchronized
16+
def update(self, observable, **kwargs) -> None:
17+
self.update_count += 1
18+
19+
20+
class TestWorkerOne(Worker):
21+
id = 'TestWorkerOne'
22+
23+
def work(self, **kwargs: Dict[str, Any]) -> None:
24+
# Simulate some work
25+
sleep(1)
26+
27+
28+
class TestWorkerTwo(Worker):
29+
id = 'TestWorkerTwo'
30+
31+
def work(self, **kwargs: Dict[str, Any]) -> None:
32+
# Simulate some work
33+
sleep(1)
34+
35+
36+
class TestWorkerThree(Worker):
37+
id = 'TestWorkerThree'
38+
39+
def work(self, **kwargs: Dict[str, Any]) -> None:
40+
# Simulate some work
41+
sleep(1)
42+
43+
44+
class TestExecutor(Executor):
45+
46+
def __init__(self, workers: List[Worker] = None):
47+
super(TestExecutor, self).__init__(max_workers=2)
48+
49+
self._registered_workers = workers
50+
51+
def create_workers(self) -> List[Worker]:
52+
return self.registered_workers
53+
54+
@property
55+
def registered_workers(self) -> List[Worker]:
56+
return self._registered_workers

0 commit comments

Comments
 (0)