예제 #1
0
    def test_save(self):
        """ save """

        p = self.preferences

        # Get the application scope.
        application = p.node("application/")

        tmp = join(self.tmpdir, "test.ini")
        application.filename = tmp

        # Set a value.
        p.set("acme.ui.bgcolor", "red")

        # Save all scopes.
        p.save()

        # Make sure a file was written.
        self.assertTrue(os.path.exists(tmp))

        # Load the 'ini' file into a new preferences node and make sure the
        # preference is in there.
        p = Preferences()
        p.load(tmp)

        self.assertEqual("red", p.get("acme.ui.bgcolor"))

        # Cleanup.
        os.remove(tmp)
    def test_save(self):
        """ save """

        p = self.preferences

        # Get the application scope.
        application = p.node("application/")

        tmp = join(self.tmpdir, "test.ini")
        application.filename = tmp

        # Set a value.
        p.set("acme.ui.bgcolor", "red")

        # Save all scopes.
        p.save()

        # Make sure a file was written.
        self.assertEqual(True, os.path.exists(tmp))

        # Load the 'ini' file into a new preferences node and make sure the
        # preference is in there.
        p = Preferences()
        p.load(tmp)

        self.assertEqual("red", p.get("acme.ui.bgcolor"))

        # Cleanup.
        os.remove(tmp)

        return
    def test_sync_anytrait_items_not_event(self):
        """ Test sychronizing trait with name *_items which is a normal trait
        rather than an event trait for listening to list/dict/set mutation.
        """

        class MyPreferencesHelper(PreferencesHelper):
            preferences_path = Str('my_section')

            names_items = Str()

        helper = MyPreferencesHelper(preferences=self.preferences)
        helper.names_items = "Hello"

        self.preferences.save(self.tmpfile)
        new_preferences = Preferences()
        new_preferences.load(self.tmpfile)

        self.assertEqual(
            sorted(new_preferences.keys("my_section")),
            ["names_items"]
        )
        self.assertEqual(
            new_preferences.get("my_section.names_items"),
            str(helper.names_items),
        )
    def test_preferences_page_apply(self):
        """ Test applying the preferences """

        # this sets up imitate Mayavi usage.

        class MyPreferencesPage(PreferencesPage):

            # the following set default values for class traits
            category = "Application"

            help_id = ""

            name = "Note"

            preferences_path = "my_ref.pref"

            # custom preferences

            backend = Enum("auto", "simple", "test")

            traits_view = View(Group(Item("backend")))

        preferences = Preferences()
        pref_page = MyPreferencesPage(
            preferences=preferences,
            category="Another Application",
            help_id="this_wont_be_saved",
            name="Different Note",
            # custom preferences
            backend="simple",
        )
        pref_page.apply()

        self.assertEqual(preferences.get("my_ref.pref.backend"), "simple")
        self.assertEqual(preferences.keys("my_ref.pref"), ["backend"])

        # this is not saved by virtue of it being static and never assigned to
        self.assertIsNone(preferences.get("my_ref.pref.traits_view"))

        # These are skipped because this trait is defined on the
        # PreferencesPage.
        self.assertIsNone(preferences.get("my_ref.pref.help_id"))
        self.assertIsNone(preferences.get("my_ref.pref.category"))
        self.assertIsNone(preferences.get("my_ref.pref.name"))
    def test_real_unicode_values(self):
        """ Test with real life unicode values """

        p = self.preferences
        p.load(self.example)

        class AcmeUIPreferencesHelper(PreferencesHelper):
            """ A helper! """

            # The path to the preferences node that contains our preferences.
            preferences_path = "acme.ui"

            # The traits that we want to initialize from preferences.
            bgcolor = Str("blue")
            width = Int(50)
            ratio = Float(1.0)
            visible = Bool(True)
            description = Str("")
            offsets = List(Int, [1, 2, 3, 4])
            names = List(Str, ["joe", "fred", "jane"])

        helper = AcmeUIPreferencesHelper()

        first_unicode_str = "U\xdc\xf2ser"

        helper.description = first_unicode_str
        self.assertEqual(first_unicode_str, helper.description)

        second_unicode_str = "caf\xe9"
        helper.description = second_unicode_str
        self.assertEqual(second_unicode_str, helper.description)
        self.assertEqual(second_unicode_str, p.get("acme.ui.description"))

        # Save it to another file.
        tmp = os.path.join(self.tmpdir, "tmp.ini")
        p.save(tmp)

        # Load it into a new node.
        p = Preferences()
        p.load(tmp)
        self.assertEqual(second_unicode_str, p.get("acme.ui.description"))
        self.assertEqual("True", p.get("acme.ui.visible"))
        self.assertTrue(helper.visible)
    def test_save(self):
        """ save """

        p = self.preferences

        # Load the preferences from an 'ini' file.
        p.load(self.example)

        # Make sure it was all loaded!
        self.assertEqual('blue', p.get('acme.ui.bgcolor'))
        self.assertEqual('50', p.get('acme.ui.width'))
        self.assertEqual('1.0', p.get('acme.ui.ratio'))
        self.assertEqual('True', p.get('acme.ui.visible'))
        self.assertEqual('acme ui', p.get('acme.ui.description'))
        self.assertEqual('[1, 2, 3, 4]', p.get('acme.ui.offsets'))
        self.assertEqual("['joe', 'fred', 'jane']", p.get('acme.ui.names'))
        self.assertEqual('splash', p.get('acme.ui.splash_screen.image'))
        self.assertEqual('red', p.get('acme.ui.splash_screen.fgcolor'))

        # Make a change.
        p.set('acme.ui.bgcolor', 'yellow')

        # Save it to another file.
        tmp = join(self.tmpdir, 'tmp.ini')
        p.save(tmp)

        try:
            # Load it into a new node.
            p = Preferences()
            p.load(tmp)

            # Make sure it was all loaded!
            self.assertEqual('yellow', p.get('acme.ui.bgcolor'))
            self.assertEqual('50', p.get('acme.ui.width'))
            self.assertEqual('1.0', p.get('acme.ui.ratio'))
            self.assertEqual('True', p.get('acme.ui.visible'))
            self.assertEqual('acme ui', p.get('acme.ui.description'))
            self.assertEqual('[1, 2, 3, 4]', p.get('acme.ui.offsets'))
            self.assertEqual("['joe', 'fred', 'jane']", p.get('acme.ui.names'))
            self.assertEqual('splash', p.get('acme.ui.splash_screen.image'))
            self.assertEqual('red', p.get('acme.ui.splash_screen.fgcolor'))

        finally:
            # Clean up!
            os.remove(tmp)

        return
    def test_save(self):
        """ save """

        p = self.preferences

        # Load the preferences from an 'ini' file.
        p.load(self.example)

        # Make sure it was all loaded!
        self.assertEqual('blue', p.get('acme.ui.bgcolor'))
        self.assertEqual('50', p.get('acme.ui.width'))
        self.assertEqual('1.0', p.get('acme.ui.ratio'))
        self.assertEqual('True', p.get('acme.ui.visible'))
        self.assertEqual('acme ui', p.get('acme.ui.description'))
        self.assertEqual('[1, 2, 3, 4]', p.get('acme.ui.offsets'))
        self.assertEqual("['joe', 'fred', 'jane']", p.get('acme.ui.names'))
        self.assertEqual('splash', p.get('acme.ui.splash_screen.image'))
        self.assertEqual('red', p.get('acme.ui.splash_screen.fgcolor'))

        # Make a change.
        p.set('acme.ui.bgcolor', 'yellow')

        # Save it to another file.
        tmp = join(self.tmpdir, 'tmp.ini')
        p.save(tmp)

        try:
            # Load it into a new node.
            p = Preferences()
            p.load(tmp)

            # Make sure it was all loaded!
            self.assertEqual('yellow', p.get('acme.ui.bgcolor'))
            self.assertEqual('50', p.get('acme.ui.width'))
            self.assertEqual('1.0', p.get('acme.ui.ratio'))
            self.assertEqual('True', p.get('acme.ui.visible'))
            self.assertEqual('acme ui', p.get('acme.ui.description'))
            self.assertEqual('[1, 2, 3, 4]', p.get('acme.ui.offsets'))
            self.assertEqual("['joe', 'fred', 'jane']", p.get('acme.ui.names'))
            self.assertEqual('splash', p.get('acme.ui.splash_screen.image'))
            self.assertEqual('red', p.get('acme.ui.splash_screen.fgcolor'))

        finally:
            # Clean up!
            os.remove(tmp)

        return
    def test_save(self):
        """ save """

        p = self.preferences

        # Load the preferences from an 'ini' file.
        p.load(self.example)

        # Make sure it was all loaded!
        self.assertEqual("blue", p.get("acme.ui.bgcolor"))
        self.assertEqual("50", p.get("acme.ui.width"))
        self.assertEqual("1.0", p.get("acme.ui.ratio"))
        self.assertEqual("True", p.get("acme.ui.visible"))
        self.assertEqual("acme ui", p.get("acme.ui.description"))
        self.assertEqual("[1, 2, 3, 4]", p.get("acme.ui.offsets"))
        self.assertEqual("['joe', 'fred', 'jane']", p.get("acme.ui.names"))
        self.assertEqual("splash", p.get("acme.ui.splash_screen.image"))
        self.assertEqual("red", p.get("acme.ui.splash_screen.fgcolor"))

        # Make a change.
        p.set("acme.ui.bgcolor", "yellow")

        # Save it to another file.
        tmp = join(self.tmpdir, "tmp.ini")
        p.save(tmp)

        try:
            # Load it into a new node.
            p = Preferences()
            p.load(tmp)

            # Make sure it was all loaded!
            self.assertEqual("yellow", p.get("acme.ui.bgcolor"))
            self.assertEqual("50", p.get("acme.ui.width"))
            self.assertEqual("1.0", p.get("acme.ui.ratio"))
            self.assertEqual("True", p.get("acme.ui.visible"))
            self.assertEqual("acme ui", p.get("acme.ui.description"))
            self.assertEqual("[1, 2, 3, 4]", p.get("acme.ui.offsets"))
            self.assertEqual("['joe', 'fred', 'jane']", p.get("acme.ui.names"))
            self.assertEqual("splash", p.get("acme.ui.splash_screen.image"))
            self.assertEqual("red", p.get("acme.ui.splash_screen.fgcolor"))

        finally:
            # Clean up!
            os.remove(tmp)
    def test_flush(self):
        """ flush """

        p = self.preferences

        # A temporary .ini file for this test.
        tmp = join(self.tmpdir, 'tmp.ini')

        # This could be set in the constructor of course, its just here we
        # want to use the instance declared in 'setUp'.
        p.filename = tmp

        try:
            # Load the preferences from an 'ini' file.
            p.load(self.example)

            # Flush it.
            p.flush()

            # Load it into a new node.
            p = Preferences()
            p.load(tmp)

            # Make sure it was all loaded!
            self.assertEqual('blue', p.get('acme.ui.bgcolor'))
            self.assertEqual('50', p.get('acme.ui.width'))
            self.assertEqual('1.0', p.get('acme.ui.ratio'))
            self.assertEqual('True', p.get('acme.ui.visible'))
            self.assertEqual('acme ui', p.get('acme.ui.description'))
            self.assertEqual('[1, 2, 3, 4]', p.get('acme.ui.offsets'))
            self.assertEqual("['joe', 'fred', 'jane']", p.get('acme.ui.names'))
            self.assertEqual('splash', p.get('acme.ui.splash_screen.image'))
            self.assertEqual('red', p.get('acme.ui.splash_screen.fgcolor'))

        finally:
            # Clean up!
            os.remove(tmp)

        return
    def test_flush(self):
        """ flush """

        p = self.preferences

        # A temporary .ini file for this test.
        tmp = join(self.tmpdir, 'tmp.ini')

        # This could be set in the constructor of course, its just here we
        # want to use the instance declared in 'setUp'.
        p.filename = tmp

        try:
            # Load the preferences from an 'ini' file.
            p.load(self.example)

            # Flush it.
            p.flush()

            # Load it into a new node.
            p = Preferences()
            p.load(tmp)

            # Make sure it was all loaded!
            self.assertEqual('blue', p.get('acme.ui.bgcolor'))
            self.assertEqual('50', p.get('acme.ui.width'))
            self.assertEqual('1.0', p.get('acme.ui.ratio'))
            self.assertEqual('True', p.get('acme.ui.visible'))
            self.assertEqual('acme ui', p.get('acme.ui.description'))
            self.assertEqual('[1, 2, 3, 4]', p.get('acme.ui.offsets'))
            self.assertEqual("['joe', 'fred', 'jane']", p.get('acme.ui.names'))
            self.assertEqual('splash', p.get('acme.ui.splash_screen.image'))
            self.assertEqual('red', p.get('acme.ui.splash_screen.fgcolor'))

        finally:
            # Clean up!
            os.remove(tmp)

        return
예제 #11
0
    def test_preferences_page_apply_skip_items_traits(self):
        """ Test _items traits from List mutation are skipped. """
        # Regression test for enthought/apptools#129

        class MyPreferencesPage(PreferencesPage):
            preferences_path = "my_ref.pref"
            names = List(Str())

        preferences = Preferences()
        pref_page = MyPreferencesPage(
            preferences=preferences,
            names=["1"],
        )
        pref_page.names.append("2")
        pref_page.apply()

        self.assertEqual(preferences.get("my_ref.pref.names"), str(["1", "2"]))
        self.assertEqual(preferences.keys("my_ref.pref"), ["names"])
    def test_sync_anytrait_items_overload(self):
        """ Test sychronizing trait with name *_items not to be mistaken
        as the event trait for mutating list/dict/set
        """
        class MyPreferencesPage(PreferencesPage):
            preferences_path = Str('my_section')

            names_items = Str()

        preferences = Preferences()
        pref_page = MyPreferencesPage(preferences=preferences)
        pref_page.names_items = "Hello"
        pref_page.apply()

        self.assertEqual(sorted(preferences.keys("my_section")),
                         ["names_items"])
        self.assertEqual(
            preferences.get("my_section.names_items"),
            "Hello",
        )
    def test_mutate_list_of_values(self):
        """ Mutated list should be saved and _items events not to be
        saved in the preferences.
        """
        # Regression test for enthought/apptools#129

        class MyPreferencesHelper(PreferencesHelper):
            preferences_path = Str('my_section')

            list_of_str = List(Str)

        helper = MyPreferencesHelper(list_of_str=["1"])

        # Now modify the list to fire _items event
        helper.list_of_str.append("2")
        self.preferences.save(self.tmpfile)

        new_preferences = Preferences()
        new_preferences.load(self.tmpfile)

        self.assertEqual(
            new_preferences.get("my_section.list_of_str"), str(["1", "2"])
        )
        self.assertEqual(new_preferences.keys("my_section"), ["list_of_str"])