You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.7 KiB
71 lines
1.7 KiB
import pytest |
|
|
|
CSV_DATA = """ |
|
animal carnivore value |
|
dog TRUE 3 |
|
cat TRUE 55 |
|
horse FALSE 35 |
|
cat TRUE 60 |
|
horse FALSE 9 |
|
""" |
|
|
|
|
|
@pytest.fixture() |
|
def example(): |
|
import io |
|
|
|
import pandas |
|
|
|
buffer = io.StringIO(CSV_DATA.strip()) |
|
return pandas.read_csv(buffer, sep="\t") |
|
|
|
|
|
def test_selection_select(example): |
|
from sensospot_tools.selection import select |
|
|
|
result = select(example, "animal", "horse") |
|
assert list(result["animal"]) == ["horse", "horse"] |
|
assert list(result["value"]) == [35, 9] |
|
|
|
|
|
def test_selection_split_one_column_without_na(example): |
|
from sensospot_tools.selection import split |
|
|
|
result = dict(split(example, "carnivore")) |
|
|
|
assert sorted(result.keys()) == [False, True] |
|
assert list(result[True]["value"]) == [3, 55, 60] |
|
assert list(result[False]["value"]) == [35, 9] |
|
|
|
|
|
def test_selection_split_one_column_with_na(example): |
|
import numpy |
|
from sensospot_tools.selection import split |
|
|
|
example["carnivore"].iloc[1] = numpy.nan |
|
|
|
result = dict(split(example, "carnivore")) |
|
|
|
assert set(result.keys()) == {False, True, numpy.nan} |
|
assert list(result[True]["value"]) == [3, 60] |
|
assert list(result[False]["value"]) == [35, 9] |
|
assert list(result[numpy.nan]["value"]) == [55] |
|
|
|
|
|
def test_selection_split_multiple_columns(example): |
|
from sensospot_tools.selection import split |
|
|
|
result = { |
|
(key_1, key_2): value |
|
for key_1, key_2, value in split(example, "carnivore", "animal") |
|
} |
|
|
|
assert sorted(result.keys()) == [ |
|
(False, "horse"), |
|
(True, "cat"), |
|
(True, "dog"), |
|
] |
|
|
|
assert list(result[(True, "cat")]["value"]) == [55, 60] |
|
assert list(result[(True, "dog")]["value"]) == [3] |
|
assert list(result[(False, "horse")]["value"]) == [35, 9]
|
|
|