"""
Name:       r.in.ascii test
Purpose:    Tests r.in.ascii and its flags/options.

Author:     Sunveer Singh, Google Code-in 2017
Copyright:  (C) 2017 by Sunveer Singh and the GRASS Development Team
Licence:    This program is free software under the GNU General Public
            License (>=v2). Read the file COPYING that comes with GRASS
            for details.
"""

from grass.gunittest.case import TestCase
from grass.gunittest.main import test

INPUT_NOQUOTES = """north:                   4299000.00
south:                   4247000.00
east:                     528000.00
west:                     500000.00
rows:                         10
cols:                         15
null:                      -9999

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 """


class SimpleCsvTestCase(TestCase):
    ascii_test = "ascii"

    @classmethod
    def setUpClass(cls):
        """Use temporary region settings"""
        cls.use_temp_region()
        cls.runModule("g.region", n=4299000.00, s=4247000.00, e=528000.00, w=500000.00)

    @classmethod
    def tearDownClass(cls):
        cls.del_temp_region()

    def tearDown(self):
        """Remove the raster map after each test method"""
        self.runModule("g.remove", flags="f", type="raster", pattern=self.ascii_test)

    def test_no_text_delimeter(self):
        """Test loading no quotes"""
        self.assertModule(
            "r.in.ascii",
            input="-",
            output=self.ascii_test,
            type="CELL",
            stdin_=INPUT_NOQUOTES,
        )
        self.assertRasterMinMax(
            map=self.ascii_test,
            refmin=1,
            refmax=15,
            msg="ascii_test in degrees must be between 1 and 15",
        )

    def test_text_delimeter(self):
        """Testing with external file"""
        self.assertModule(
            "r.in.ascii",
            input="data/input_ascii.txt",
            output=self.ascii_test,
            type="CELL",
        )
        self.assertRasterMinMax(
            map=self.ascii_test,
            refmin=1,
            refmax=5,
            msg="ascii_test in degrees must be between 1 and 5",
        )


if __name__ == "__main__":
    test()
