Skip to content
Snippets Groups Projects
Commit d06c035e authored by Sortofamudkip's avatar Sortofamudkip
Browse files

100% code coverage :tada:

parent e46929fb
No related branches found
No related tags found
1 merge request!12Merge "Write tests" branch into master
.coverage 0 → 100644
File added
......@@ -255,7 +255,7 @@ class Dataset:
logging.error("parameter `colname` is not a string")
raise ValueError(f"{colname} is not a string")
return self.dataframe[colname].explode().unique()
return self.dataframe[colname].unique()
def get_category_counts(
self, colname: str, ascending: bool = None
......
......@@ -2,13 +2,14 @@ import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from Dataset import Dataset
import src.Dataset
import logging
class Plotter:
def __init__(self, dataset: Dataset):
if type(dataset) != Dataset:
def __init__(self, dataset: src.Dataset.Dataset):
print(type(dataset))
if type(dataset) != src.Dataset.Dataset:
logging.error("dataset parameter is not of type Dataset")
raise ValueError(f"{dataset} is not of type Dataset")
......@@ -237,20 +238,20 @@ class Plotter:
self.customize_plot(fig, ax, styling_params)
ax.scatter(self.df[target1], self.df[target2])
def distribution_plot(self, target: str):
"""
distribution_plot _summary_
Args:
target (str): _description_
Returns:
None
"""
grouped_data = self.df.groupby(target).size()
sorted_data = grouped_data.sort_values(ascending=True)
plt.barh(sorted_data.index, sorted_data.values, data=sorted_data)
print(grouped_data.sort_values(ascending=False))
plt.xlabel("Size")
plt.ylabel(target)
plt.title(f"Distribution of {target}")
# def distribution_plot(self, target: str):
# """
# distribution_plot _summary_
# Args:
# target (str): _description_
# Returns:
# None
# """
# grouped_data = self.df.groupby(target).size()
# sorted_data = grouped_data.sort_values(ascending=True)
# plt.barh(sorted_data.index, sorted_data.values, data=sorted_data)
# print(grouped_data.sort_values(ascending=False))
# plt.xlabel("Size")
# plt.ylabel(target)
# plt.title(f"Distribution of {target}")
from pathlib import Path
from Dataset import Dataset
import src.Dataset
from Plotter import Plotter
import pandas as pd
......@@ -11,18 +11,22 @@ this_file_dir = Path(__file__).parent
@pytest.fixture
def the_plotter() -> Dataset:
dataset = Dataset(str(this_file_dir / "../data/GamingStudy_data.csv"))
def the_plotter() -> src.Dataset.Dataset:
dataset = src.Dataset.Dataset(
str(this_file_dir / "../data/GamingStudy_data.csv")
)
plotter = Plotter(dataset)
return plotter
def test_load_plotter():
"""Tests that the Plotter class can be loaded."""
dataset = Dataset(str(this_file_dir / "../data/GamingStudy_data.csv"))
dataset = src.Dataset.Dataset(
str(this_file_dir / "../data/GamingStudy_data.csv")
)
plotter = Plotter(dataset)
assert type(plotter.df) == pd.DataFrame
assert type(plotter.ds) == Dataset
assert type(plotter.ds) == src.Dataset.Dataset
def test_catch_colname_not_in_df(the_plotter: Plotter):
......@@ -38,10 +42,37 @@ def test_catch_target_not_string(the_plotter: Plotter):
with pytest.raises(ValueError):
the_plotter.distribution_plot(True)
with pytest.raises(ValueError):
the_plotter.plot_categorical_bar_chart(True, "GAD_T")
with pytest.raises(ValueError):
the_plotter.plot_categorical_bar_chart("GAD_T", True)
with pytest.raises(ValueError):
the_plotter.plot_categorical_bar_chart("GAD_TT", "GAD_T")
with pytest.raises(ValueError):
the_plotter.plot_categorical_bar_chart("GAD_T", "GAD_TT")
with pytest.raises(ValueError):
the_plotter.plot_categorical_histplot(True, "GAD_T")
with pytest.raises(ValueError):
the_plotter.plot_categorical_histplot("GAD_T", True)
with pytest.raises(ValueError):
the_plotter.plot_categorical_histplot("GAD_TT", "GAD_T")
with pytest.raises(ValueError):
the_plotter.plot_categorical_histplot("GAD_T", "GAD_TT")
with pytest.raises(ValueError):
the_plotter.plot_scatterplot(True, "GAD_T")
with pytest.raises(ValueError):
the_plotter.plot_scatterplot("GAD_T", True)
with pytest.raises(ValueError):
the_plotter.plot_scatterplot("GAD_TT", "GAD_T")
with pytest.raises(ValueError):
the_plotter.plot_scatterplot("GAD_T", "GAD_TT")
@pytest.mark.parametrize(
"param",
[True, None, "notdict", 6.4, pd, (1,), Dataset],
[True, None, "notdict", 6.4, pd, (1,), src.Dataset.Dataset],
)
def test_catch_styling_params_not_dict(the_plotter: Plotter, param):
"""Tests that functions that take styling_params correctly
......@@ -52,15 +83,42 @@ def test_catch_styling_params_not_dict(the_plotter: Plotter, param):
the_plotter.plot_categorical_histplot("GAD_T", "GAD_T", param)
with pytest.raises(ValueError):
the_plotter.plot_scatterplot("GAD_T", "GAD_T", param)
with pytest.raises(ValueError):
the_plotter.distribution_plot("GAD_T", param)
def test_catch_plotter_init_not_Dataset():
"""Tests that the Plotter's init actually takes a Dataset."""
"""Tests that the Plotter's init actually takes a src.Dataset.Dataset."""
with pytest.raises(ValueError):
p = Plotter("not-a-Dataset")
p = Plotter("not-a-src.Dataset.Dataset")
def test_customize_plot(the_plotter: Plotter):
fig, ax = plt.subplots()
the_plotter.customize_plot(fig, ax, {"title": "a"})
assert True
def test_distribution_plot(the_plotter: Plotter):
the_plotter.distribution_plot("GAD_T")
assert True
def test_plot_categorical_bar_chart(the_plotter: Plotter):
the_plotter.plot_categorical_bar_chart("GAD_T", "SWL_T")
assert True
def test_plot_categorical_boxplot(the_plotter: Plotter):
the_plotter.plot_categorical_boxplot("whyplay", "SWL_T")
assert True
def test_plot_categorical_histplot(the_plotter: Plotter):
the_plotter.plot_categorical_histplot("whyplay", "SWL_T")
assert True
def test_plot_scatterplot(the_plotter: Plotter):
the_plotter.plot_scatterplot("GAD_T", "SWL_T")
assert True
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment