#!/usr/bin/python

import sys, os.path
sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__), "..")))

import unittest

from xdiagnose.diagnostics import Diagnostic

class TestGrubFile(unittest.TestCase):
    def test_backup_nonexistant_file(self):
        path = '/tmp/foo'
        safe_backup(path, keep_original=True)

    def test_backup_existing_file(self):
        path = '/tmp/foo'
        safe_backup(path, keep_original=True)

    def test_backup_existing_file_already_backed_up(self):
        path = '/tmp/foo'
        safe_backup(path, keep_original=True)

    def test_backup_existing_symlink_file(self):
        path = '/tmp/foo'
        safe_backup(path, keep_original=True)

    def test_backup_existing_dir(self):
        path = '/tmp/foo'
        safe_backup(path, keep_original=True)

    def test_backup_existing_dir_already_backed_up(self):
        path = '/tmp/foo'
        safe_backup(path, keep_original=True)

    def test_load_sample(self):
        dict = config_dict('sample.conf')
        # TODO: Verify dict is as expected

    def test_load_sample_grub(self):
        dict = config_dict('sample_grub.conf')
        # TODO: Verify dict

    def test_save(self):
        # TODO: Set fileio to something testable (memory file?)
        config_update(filename, fileio=todo)

    def test_save_overrides(self):
        # TODO
        filename = "/tmp/foo"
        overrides = {'param_1': 'overridden'}
        config_update(filename, override_params=overrides, fileio=todo)
        pass

    def test_save_merges(self):
        merges = {'param_1': 'merged'}
        config_update(filename, merge_params=merges, fileio=todo)

    def test_save_overridden_and_merged(self):
        merges = {'param_1': 'merged'}
        overrides = {'param_1': 'overridden'}
        config_update(filename, merge_params=merges, override_params=overrides)

    def test_save_overrides_with_merges(self):
        merges = {'param_1': 'merged', 'param_2': 'also_merged'}
        overrides = {'param_3': 'overridden', 'param_4': 'overridden_too'}
        config_update(filename, merge_params=merges, override_params=overrides)

    def test_save_additions(self):
        merges = {'new_param_1': 'merged'}
        overrides = {'new_param_2': 'overridden'}
        config_update(filename, merge_params=merges, override_params=overrides)

    def test_save_additions_of_disabled(self):
        merges = {'new_param_1': 'merged'}
        overrides = {'new_param_2': 'overridden'}
        config_update(filename, merge_params=merges, override_params=overrides)
        
    # TODO: Migrate some of the stuff from config_update.py to here
    # 

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