test_relink.py 3.67 KB
Newer Older
# coding=utf-8
from unittest import TestCase

from earthdiagnostics.diagnostic import DiagnosticVariableOption
from earthdiagnostics.box import Box
from earthdiagnostics.general.relink import Relink
from mock import Mock, patch

from earthdiagnostics.modelingrealm import ModelingRealms


class TestRelink(TestCase):
    def setUp(self):
        self.data_manager = Mock()

        self.diags = Mock()
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        self.diags.model_version = "model_version"
        self.diags.config.experiment.get_chunk_list.return_value = (
            ("20010101", 0, 0),
            ("20010101", 0, 1),
        )

        self.box = Box()
        self.box.min_depth = 0
        self.box.max_depth = 100

    def fake_parse(self, value):
        return value

Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
    @patch.object(DiagnosticVariableOption, "parse", fake_parse)
    def test_generate_jobs(self):

Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        jobs = Relink.generate_jobs(self.diags, ["diagnostic", "atmos", "var"])
        self.assertEqual(len(jobs), 2)
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        self.assertEqual(
            jobs[0],
            Relink(
                self.data_manager,
                "20010101",
                0,
                0,
                ModelingRealms.atmos,
                "var",
                True,
                "",
            ),
        )
        self.assertEqual(
            jobs[1],
            Relink(
                self.data_manager,
                "20010101",
                0,
                1,
                ModelingRealms.atmos,
                "var",
                True,
                "",
            ),
        )
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        jobs = Relink.generate_jobs(
            self.diags, ["diagnostic", "seaIce", "var", "False"]
        )
        self.assertEqual(len(jobs), 2)
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        self.assertEqual(
            jobs[0],
            Relink(
                self.data_manager,
                "20010101",
                0,
                0,
                ModelingRealms.seaIce,
                "var",
                False,
                "",
            ),
        )
        self.assertEqual(
            jobs[1],
            Relink(
                self.data_manager,
                "20010101",
                0,
                1,
                ModelingRealms.seaIce,
                "var",
                False,
                "",
            ),
        )
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        jobs = Relink.generate_jobs(
            self.diags, ["diagnostic", "ocean", "var", "True", "grid"]
        )
        self.assertEqual(len(jobs), 2)
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        self.assertEqual(
            jobs[0],
            Relink(
                self.data_manager,
                "20010101",
                0,
                0,
                ModelingRealms.ocean,
                "var",
                True,
                "grid",
            ),
        )
        self.assertEqual(
            jobs[1],
            Relink(
                self.data_manager,
                "20010101",
                0,
                1,
                ModelingRealms.ocean,
                "var",
                True,
                "grid",
            ),
        )

        with self.assertRaises(Exception):
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
            Relink.generate_jobs(self.diags, ["diagnostic"])

        with self.assertRaises(Exception):
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
            Relink.generate_jobs(
                self.diags, ["diagnostic", "0", "0", "0", "0", "0", "0", "0"]
            )
Javier Vegas-Regidor's avatar
Javier Vegas-Regidor committed
        mixed = Relink(
            self.data_manager,
            "20010101",
            0,
            0,
            ModelingRealms.ocean,
            "var",
            True,
            "grid",
        )
        self.assertEqual(
            str(mixed),
            "Relink output Startdate: 20010101 Member: 0 Chunk: 0 "
            "Move old: True Variable: ocean:var Grid: grid",
        )