#! /usr/bin/env python # -*- coding: utf-8 -*- # Author: Hamilton Kibbe <ham@hamiltonkib.be> from ..cam import CamFile, FileSettings from .tests import * def test_filesettings_defaults(): """ Test FileSettings default values """ fs = FileSettings() assert_equal(fs.format, (2, 5)) assert_equal(fs.notation, 'absolute') assert_equal(fs.zero_suppression, 'trailing') assert_equal(fs.units, 'inch') def test_filesettings_dict(): """ Test FileSettings Dict """ fs = FileSettings() assert_equal(fs['format'], (2, 5)) assert_equal(fs['notation'], 'absolute') assert_equal(fs['zero_suppression'], 'trailing') assert_equal(fs['units'], 'inch') def test_filesettings_assign(): """ Test FileSettings attribute assignment """ fs = FileSettings() fs.units = 'test1' fs.notation = 'test2' fs.zero_suppression = 'test3' fs.format = 'test4' assert_equal(fs.units, 'test1') assert_equal(fs.notation, 'test2') assert_equal(fs.zero_suppression, 'test3') assert_equal(fs.format, 'test4') def test_filesettings_dict_assign(): """ Test FileSettings dict-style attribute assignment """ fs = FileSettings() fs['units'] = 'metric' fs['notation'] = 'incremental' fs['zero_suppression'] = 'leading' fs['format'] = (1, 2) assert_equal(fs.units, 'metric') assert_equal(fs.notation, 'incremental') assert_equal(fs.zero_suppression, 'leading') assert_equal(fs.format, (1, 2)) def test_camfile_init(): """ Smoke test CamFile test """ cf = CamFile() def test_camfile_settings(): """ Test CamFile Default Settings """ cf = CamFile() assert_equal(cf.settings, FileSettings()) def test_bounds_override_smoketest(): cf = CamFile() cf.bounds def test_zeros(): """ Test zero/zero_suppression interaction """ fs = FileSettings() assert_equal(fs.zero_suppression, 'trailing') assert_equal(fs.zeros, 'leading') fs['zero_suppression'] = 'leading' assert_equal(fs.zero_suppression, 'leading') assert_equal(fs.zeros, 'trailing') fs.zero_suppression = 'trailing' assert_equal(fs.zero_suppression, 'trailing') assert_equal(fs.zeros, 'leading') fs['zeros'] = 'trailing' assert_equal(fs.zeros, 'trailing') assert_equal(fs.zero_suppression, 'leading') fs.zeros = 'leading' assert_equal(fs.zeros, 'leading') assert_equal(fs.zero_suppression, 'trailing') fs = FileSettings(zeros='leading') assert_equal(fs.zeros, 'leading') assert_equal(fs.zero_suppression, 'trailing') fs = FileSettings(zero_suppression='leading') assert_equal(fs.zeros, 'trailing') assert_equal(fs.zero_suppression, 'leading') fs = FileSettings(zeros='leading', zero_suppression='trailing') assert_equal(fs.zeros, 'leading') assert_equal(fs.zero_suppression, 'trailing') fs = FileSettings(zeros='trailing', zero_suppression='leading') assert_equal(fs.zeros, 'trailing') assert_equal(fs.zero_suppression, 'leading') def test_filesettings_validation(): """ Test FileSettings constructor argument validation """ # absolute-ish is not a valid notation assert_raises(ValueError, FileSettings, 'absolute-ish', 'inch', None, (2, 5), None) # degrees kelvin isn't a valid unit for a CAM file assert_raises(ValueError, FileSettings, 'absolute', 'degrees kelvin', None, (2, 5), None) assert_raises(ValueError, FileSettings, 'absolute', 'inch', 'leading', (2, 5), 'leading') # Technnically this should be an error, but Eangle files often do this incorrectly so we # allow it #assert_raises(ValueError, FileSettings, 'absolute', # 'inch', 'following', (2, 5), None) assert_raises(ValueError, FileSettings, 'absolute', 'inch', None, (2, 5), 'following') assert_raises(ValueError, FileSettings, 'absolute', 'inch', None, (2, 5, 6), None) def test_key_validation(): fs = FileSettings() assert_raises(KeyError, fs.__getitem__, 'octopus') assert_raises(KeyError, fs.__setitem__, 'octopus', 'do not care') assert_raises(ValueError, fs.__setitem__, 'notation', 'absolute-ish') assert_raises(ValueError, fs.__setitem__, 'units', 'degrees kelvin') assert_raises(ValueError, fs.__setitem__, 'zero_suppression', 'following') assert_raises(ValueError, fs.__setitem__, 'zeros', 'following') assert_raises(ValueError, fs.__setitem__, 'format', (2, 5, 6))