Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
language: python

install:
- pip install -r requirements.txt

script: pytest # run test

after_success:
- codecov # submit coverage
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Investing Algorithm Framework
[![Build Status](https://travis-ci.org/investingbots/investing-bot-framework.svg?branch=master)](https://travis-ci.org/investingbots/investing-bot-framework)

# Investing Algorithm Framework

The Investing Algorithm Framework is a free and open source Python framework that encourages rapid development and clean,
pragmatic design.
Expand Down
Empty file modified ci/test.sh
100644 → 100755
Empty file.
Original file line number Diff line number Diff line change
@@ -1,64 +1,34 @@
from typing import Dict, Any
from unittest import TestCase
from investing_bot_framework.tests.core.data.data_providers.resources import TestDataProviderOne, \
TestDataProviderTwo, TestObserver

from investing_bot_framework.core.data_providers import DataProvider
from investing_bot_framework.core.events import Observer

def test():
data_provider_one = TestDataProviderOne()

class TestDataProviderOne(DataProvider):
assert data_provider_one.id is not None
assert data_provider_one.get_id() == TestDataProviderOne.id

id = 'TestDataProviderOne'
observer = TestObserver()
data_provider_one.add_observer(observer)

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

# Observer must have been updated
assert observer.update_count == 1

class TestDataProviderTwo(DataProvider):
data_provider_two = TestDataProviderTwo()

id = 'TestDataProviderTwo'
assert data_provider_two.id is not None
assert data_provider_two.get_id() == TestDataProviderTwo.id

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

# Run the data_providers provider
data_provider_two.start()

class TestObserver(Observer):
# Observer must have been updated
assert observer.update_count == 2

def __init__(self) -> None:
self.update_count = 0

def update(self, observable, **kwargs) -> None:
self.update_count += 1


class DataProviderSetup(TestCase):

def test(self):
data_provider_one = TestDataProviderOne()

self.assertIsNotNone(data_provider_one.id)
self.assertEqual(data_provider_one.get_id(), TestDataProviderOne.id)

observer = TestObserver()
data_provider_one.add_observer(observer)

# Run the data_providers provider
data_provider_one.start()

# Observer must have been updated
self.assertEqual(observer.update_count, 1)

data_provider_two = TestDataProviderTwo()

self.assertIsNotNone(data_provider_two.id)
self.assertEqual(data_provider_two.get_id(), TestDataProviderTwo.id)

data_provider_two.add_observer(observer)

# Run the data_providers provider
data_provider_two.start()

# Observer must have been updated
self.assertEqual(observer.update_count, 2)

# Id´s must be different
self.assertNotEqual(TestDataProviderOne.id, TestDataProviderTwo.id)
# Id´s must be different
assert TestDataProviderOne.id != TestDataProviderTwo.id
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from typing import Dict, Any

from investing_bot_framework.core.events import Observer
from investing_bot_framework.core.data_providers import DataProvider


class TestDataProviderOne(DataProvider):

id = 'TestDataProviderOne'

def provide_data(self, **kwargs: Dict[str, Any]) -> Any:
return "data_providers"


class TestDataProviderTwo(DataProvider):

id = 'TestDataProviderTwo'

def provide_data(self, **kwargs: Dict[str, Any]) -> Any:
return "data_providers"


class TestObserver(Observer):

def __init__(self) -> None:
self.update_count = 0

def update(self, observable, **kwargs) -> None:
self.update_count += 1
56 changes: 56 additions & 0 deletions investing_bot_framework/tests/core/executors/resources.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
from typing import Dict, Any, List
from time import sleep
from wrapt import synchronized

from investing_bot_framework.core.workers import Worker
from investing_bot_framework.core.events.observer import Observer
from investing_bot_framework.core.executors import Executor


class TestObserver(Observer):

def __init__(self) -> None:
self.update_count = 0

@synchronized
def update(self, observable, **kwargs) -> None:
self.update_count += 1


class TestWorkerOne(Worker):
id = 'TestWorkerOne'

def work(self, **kwargs: Dict[str, Any]) -> None:
# Simulate some work
sleep(1)


class TestWorkerTwo(Worker):
id = 'TestWorkerTwo'

def work(self, **kwargs: Dict[str, Any]) -> None:
# Simulate some work
sleep(1)


class TestWorkerThree(Worker):
id = 'TestWorkerThree'

def work(self, **kwargs: Dict[str, Any]) -> None:
# Simulate some work
sleep(1)


class TestExecutor(Executor):

def __init__(self, workers: List[Worker] = None):
super(TestExecutor, self).__init__(max_workers=2)

self._registered_workers = workers

def create_workers(self) -> List[Worker]:
return self.registered_workers

@property
def registered_workers(self) -> List[Worker]:
return self._registered_workers
Loading