예제 #1
0
파일: test_proc.py 프로젝트: rsp9u/schedaus
 def test_duplication_exception(self):
     d = yaml.safe_load(example_yaml)
     d["task"].append({"name": "TK1"})
     d["task"].append({"name": "TK2"})
     n = Normalizer()
     n.normalize(d)
     with self.assertRaises(Exception) as cm:
         Resolver().resolve(d)
     self.assertEqual(cm.exception.args[0], "TK1, TK2 are duplicated.")
예제 #2
0
 def test_profile(self):
     d = yaml.safe_load(example_yaml)
     n = Normalizer()
     n.normalize(d)
     pr = cProfile.Profile()
     pr.enable()
     Resolver().resolve(d)
     pr.disable()
     st = pstats.Stats(pr)
     st.sort_stats("cumtime")
     st.print_stats(0.1)
예제 #3
0
def process_yaml(b64_data, output_svg):
    data_yaml = decode_base64url(b64_data)
    logger.debug(data_yaml)
    data_dict = yaml.safe_load(data_yaml)
    n = Normalizer()
    n.normalize(data_dict)
    renderer = resolve_render(data_dict)
    if output_svg:
        return make_svg_response(renderer.get_svg().tostring())
    else:
        return make_png_response(renderer.get_svg().tostring())
예제 #4
0
def process_sch(b64_data, output_svg=True):
    data_sch = decode_base64url(b64_data)
    logger.debug(data_sch)
    p = Parser()
    p.parse(data_sch)
    n = Normalizer()
    n.normalize(p.output)
    renderer = resolve_render(p.output)
    if output_svg:
        return make_svg_response(renderer.get_svg().tostring())
    else:
        return make_png_response(renderer.get_svg().tostring())
예제 #5
0
class TestNormalize(unittest.TestCase):
    def test_normalize_weekday(self):
        d = {"project": {"closed": ["su", "sat", "Wed", "Mo"]}}
        n = Normalizer()
        n.normalize(d)

        self.assertEqual(d["project"]["closed"], ["Sunday", "Saturday", "Wednesday", "Monday"])

    def test_normalize_period_in_task_plan(self):
        cases = [
            (1, 1),
            (1.5, 1.5),
            ("1", 1),
            ("1 day", 1),
            ("2 days", 2),
            ("0.5 days", 0.5),
            ("1.5 days", 1.5),
            ("1 hour", 0.125),
            ("8 hours", 1),
        ]

        for case in cases:
            with self.subTest(period=case[0], type=type(case[0]), expected=case[1]):
                d = {"task": [{"plan": {"period": case[0]}}]}
                n = Normalizer()
                n.normalize(d)

                self.assertEqual(d["task"][0]["plan"]["period"], case[1])
                self.assertTrue(isinstance(d["task"][0]["plan"]["period"], float))
예제 #6
0
    def test_normalize_period_in_others(self):
        d = {
            "task": [{"actual": {"period": "2 days"}}],
            "milestone": [{"plan": {"period": "2 days"}, "actual": {"period": "2 days"}}],
        }
        n = Normalizer()
        n.normalize(d)

        self.assertEqual(d["task"][0]["actual"]["period"], 2.0)
        self.assertTrue(isinstance(d["task"][0]["actual"]["period"], float))

        self.assertEqual(d["milestone"][0]["plan"]["period"], 2.0)
        self.assertTrue(isinstance(d["milestone"][0]["plan"]["period"], float))

        self.assertEqual(d["milestone"][0]["actual"]["period"], 2.0)
        self.assertTrue(isinstance(d["milestone"][0]["actual"]["period"], float))
예제 #7
0
파일: test_proc.py 프로젝트: rsp9u/schedaus
    def test_schedule_to_drawing(self):
        d = yaml.safe_load(example_yaml)
        n = Normalizer()
        n.normalize(d)
        result = Resolver().resolve(d)

        self.assertEqual(result["calendar"].start, date(2020, 4, 1))
        self.assertEqual(result["calendar"].end, date(2020, 5, 15))
        self.assertEqual(result["calendar"].today, date(2020, 4, 20))
        self.assertEqual(len(result["calendar"].closed), 13)

        names = {sc.name for sc in result["schedules"]}
        self.assertEqual(
            names, {
                "TK1", "TK2", "task1", "task2", "task3", "task4", "task5",
                "milestone1"
            })
예제 #8
0
파일: test_proc.py 프로젝트: rsp9u/schedaus
    def test_calculate_plan_dates(self):
        d = yaml.safe_load(example_yaml)
        n = Normalizer()
        n.normalize(d)
        result = Resolver().resolve(d)

        sc = {sc.name: sc for sc in result["schedules"]}
        expected = {
            "TK1": ((2020, 4, 10), (2020, 4, 24)),
            "TK2": ((2020, 4, 27), (2020, 5, 11)),
            "task1": ((2020, 4, 1), (2020, 4, 6)),
            "task2": ((2020, 4, 7), (2020, 4, 9)),
            "task3": ((2020, 4, 10), (2020, 5, 15)),
            "task4": ((2020, 4, 10), (2020, 4, 17)),
            "task5": ((2020, 4, 9), (2020, 4, 22)),
        }
        for name, plan in expected.items():
            with self.subTest(name=name, plan=plan):
                start = date(*plan[0])
                end = date(*plan[1])
                self.assertEqual(sc[name].plan_start, start)
                self.assertEqual(sc[name].plan_end, end)
예제 #9
0
    def test_normalize_progress_in_milestone(self):
        d = {"milestone": [{"actual": {"progress": "50%"}}]}
        n = Normalizer()
        n.normalize(d)

        self.assertEqual(d["milestone"][0]["actual"]["progress"], 0.5)
예제 #10
0
    def test_normalize_weekday(self):
        d = {"project": {"closed": ["su", "sat", "Wed", "Mo"]}}
        n = Normalizer()
        n.normalize(d)

        self.assertEqual(d["project"]["closed"], ["Sunday", "Saturday", "Wednesday", "Monday"])
예제 #11
0
        cases = [
            (0.1, 0.1),
            (1, 1),
            ("0.1", 0.1),
            ("1", 1),
            ("10%", 0.1),
            ("200%", 2),
            ("10 %", 0.1),
            ("0.1%", 0.001),
            ("1/5", 0.2),
            ("1/3", 0.333),
            ("1/0.5", 2),
            ("1 / 5", 0.2),
        ]

        for case in cases:
            with self.subTest(period=case[0], type=type(case[0]), expected=case[1]):
                d = {"task": [{"actual": {"progress": case[0]}}]}
                n = Normalizer()
                n.normalize(d)

                self.assertEqual(round(d["task"][0]["actual"]["progress"], 3), case[1])
                self.assertTrue(isinstance(d["task"][0]["actual"]["progress"], float))

    def test_normalize_progress_in_milestone(self):
        d = {"milestone": [{"actual": {"progress": "50%"}}]}
        n = Normalizer()
        n.normalize(d)

        self.assertEqual(d["milestone"][0]["actual"]["progress"], 0.5)