1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3 4# 5# Copyright 2017, Data61 6# Commonwealth Scientific and Industrial Research Organisation (CSIRO) 7# ABN 41 687 119 230. 8# 9# This software may be distributed and modified according to the terms of 10# the BSD 2-Clause license. Note that NO WARRANTY is provided. 11# See "LICENSE_BSD2.txt" for details. 12# 13# @TAG(DATA61_BSD) 14# 15 16from __future__ import absolute_import, division, print_function, \ 17 unicode_literals 18 19import os, sys, tempfile, unittest 20 21ME = os.path.abspath(__file__) 22 23# Make CAmkES importable 24sys.path.append(os.path.join(os.path.dirname(ME), '../../..')) 25 26from camkes.internal.tests.utils import CAmkESTest 27from camkes.parser.stage0 import Reader 28 29class TestReader(CAmkESTest): 30 def setUp(self): 31 super(TestReader, self).setUp() 32 self.reader = Reader() 33 34 def test_empty_string(self): 35 content, read = self.reader.parse_string('') 36 self.assertEqual(content, '') 37 self.assertLen(read, 0) 38 39 def test_basic_string(self): 40 content, read = self.reader.parse_string('hello world') 41 self.assertEqual(content, 'hello world') 42 self.assertLen(read, 0) 43 44 def test_unicode_string(self): 45 content, read = self.reader.parse_string('���hello world') 46 self.assertEqual(content, '���hello world') 47 self.assertLen(read, 0) 48 49 def test_empty_file(self): 50 tmp = self.mkstemp() 51 with open(tmp, 'wt') as f: 52 f.write('hello world') 53 54 content, read = self.reader.parse_file(tmp) 55 56 self.assertEqual(content, 'hello world') 57 self.assertEqual(read, set([tmp])) 58 59 def test_unicode_file(self): 60 tmp = self.mkstemp() 61 with open(tmp, 'wb') as f: 62 f.write('���hello world'.encode('utf-8')) 63 64 content, read = self.reader.parse_file(tmp) 65 66 self.assertEqual(content, '���hello world') 67 self.assertEqual(read, set([tmp])) 68 69 def test_non_existent_file(self): 70 # Create a path that we know refers to a file that doesn't exist 71 _, tmp = tempfile.mkstemp() 72 os.remove(tmp) 73 assert not os.path.exists(tmp) 74 75 with self.assertRaises(IOError): 76 self.reader.parse_file(tmp) 77 78if __name__ == '__main__': 79 unittest.main() 80