-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
140 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
from .model import * | ||
from .models import * |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
from .base import SPJResult | ||
from .continuity import ContinuitySPJResult | ||
from .general import load_result | ||
from .simple import SimpleSPJResult |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
from typing import Tuple, Optional | ||
|
||
from .base import SPJResult | ||
from .continuity import ContinuitySPJResult | ||
from .simple import SimpleSPJResult | ||
|
||
|
||
def _load_from_values(correctness, score, message, detail) -> SPJResult: | ||
if score is None: | ||
return SimpleSPJResult(correctness, message, detail) | ||
else: | ||
return ContinuitySPJResult(correctness, score, message, detail) | ||
|
||
|
||
def _load_result_from_dict(data: dict) -> SPJResult: | ||
_correctness = data['correctness'] | ||
_score = data.get('score', None) | ||
_message = data.get('message', None) | ||
_detail = data.get('detail', None) | ||
|
||
return _load_from_values(_correctness, _score, _message, _detail) | ||
|
||
|
||
def _load_core_result_from_tuple(head) -> Tuple[bool, Optional[float]]: | ||
if isinstance(head, (list, tuple)): | ||
_correctness, _score = tuple(head) | ||
else: | ||
_correctness, _score = head, None | ||
|
||
return _correctness, _score | ||
|
||
|
||
def _load_result_from_tuple(data: tuple) -> SPJResult: | ||
if not data: | ||
raise ValueError( | ||
'Tuple result should has no less than 1 object but {actual} found.'.format(actual=repr(len(data)))) | ||
elif len(data) == 1: | ||
_core, _message, _detail = data[0], None, None | ||
elif len(data) == 2: | ||
(_core, _message), _detail = data, None | ||
elif len(data) == 3: | ||
_core, _message, _detail = data | ||
else: | ||
raise ValueError( | ||
'Tuple result should has no more than 3 object but {actual} found.'.format(actual=repr(len(data)))) | ||
|
||
_correctness, _score = _load_core_result_from_tuple(_core) | ||
return _load_from_values(_correctness, _score, _message, _detail) | ||
|
||
|
||
def load_result(data) -> SPJResult: | ||
""" | ||
load result from all kinds of data | ||
:param data: raw data | ||
:return: spj result | ||
""" | ||
if isinstance(data, SimpleSPJResult): | ||
return data | ||
elif isinstance(data, ContinuitySPJResult): | ||
return data | ||
elif isinstance(data, dict): | ||
return _load_result_from_dict(data) | ||
elif isinstance(data, (list, tuple)): | ||
return _load_result_from_tuple(tuple(data)) | ||
else: | ||
return SimpleSPJResult(not not data) |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
from .config import * | ||
from .models import * | ||
from .utils import * |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
from .test_continuity import TestModelsContinuity | ||
from .test_simple import TestModelsSimple |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import os | ||
|
||
import pytest | ||
|
||
from pyspj.models import ContinuitySPJResult | ||
|
||
|
||
@pytest.mark.unittest | ||
class TestModelsContinuity: | ||
def test_simple(self): | ||
result = ContinuitySPJResult(True, 0.5, '123', '12345') | ||
assert result.correctness | ||
assert result.score == 0.5 | ||
assert result.message == '123' | ||
assert result.detail == '12345' | ||
|
||
def test_invalid_score(self): | ||
with pytest.raises(ValueError): | ||
ContinuitySPJResult(True, -0.5, '123', '12345') | ||
with pytest.raises(ValueError): | ||
ContinuitySPJResult(True, 1.5, '123', '12345') | ||
|
||
def test_to_json(self): | ||
result = ContinuitySPJResult(True, 0.5, '123', '12345') | ||
assert result.to_json() == {'correctness': True, 'detail': '12345', 'message': '123', 'score': 0.5} | ||
|
||
def test_repr(self): | ||
result = ContinuitySPJResult(True, 0.5, '123', '12345') | ||
assert repr(result) == "<ContinuitySPJResult correctness: True, score: 0.500, message: '123'>" | ||
|
||
|
||
if __name__ == "__main__": | ||
pytest.main([os.path.abspath(__file__)]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import os | ||
|
||
import pytest | ||
|
||
from pyspj.models.simple import SimpleSPJResult | ||
|
||
|
||
@pytest.mark.unittest | ||
class TestModelsSimple: | ||
def test_simple(self): | ||
result = SimpleSPJResult(True, '123', '12345') | ||
assert result.correctness | ||
assert result.message == '123' | ||
assert result.detail == '12345' | ||
|
||
def test_to_json(self): | ||
result = SimpleSPJResult(True, '123', '12345') | ||
assert result.to_json() == {'correctness': True, 'detail': '12345', 'message': '123'} | ||
|
||
def test_repr(self): | ||
result = SimpleSPJResult(True, '123', '12345') | ||
assert repr(result) == "<SimpleSPJResult correctness: True, message: '123'>" | ||
|
||
def test_message_warning_greater_than_1(self): | ||
with pytest.warns(Warning): | ||
SimpleSPJResult(True, '1 2 3 4 5\nskdjflsd', '12345') | ||
|
||
|
||
if __name__ == "__main__": | ||
pytest.main([os.path.abspath(__file__)]) |