# coding: utf-8

"""
    Airflow API

    Airflow API. All endpoints located under ``/api/v2`` can be used safely, are stable and backward compatible. Endpoints located under ``/ui`` are dedicated to the UI and are subject to breaking change depending on the need of the frontend. Users should not rely on those but use the public ones instead.

    The version of the OpenAPI document: 2
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


import unittest

from airflow_client.client.models.task_instance_state import TaskInstanceState

class TestTaskInstanceState(unittest.TestCase):
    """TaskInstanceState unit test stubs"""

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def testTaskInstanceState(self):
        """Test TaskInstanceState"""
        # inst = TaskInstanceState()

if __name__ == '__main__':
    unittest.main()
