Exemplo n.º 1
0
    def test_search_found(self):
        """Test found color."""
        begin = 5
        end = 10
        region = NormalizedRegion(begin, end)
        whole_region = mock()
        when(sublime).Region(begin, end).thenReturn(whole_region)
        color_region = mock()
        when(sublime).Region(begin + 1, end - 1).thenReturn(color_region)
        view = mock()
        test_color_text = "#FA"
        when(view).substr(whole_region).thenReturn(" %s " % test_color_text)
        when(view).substr(color_region).thenReturn(test_color_text)
        test_color = "#FB"
        test_group = "test_group"
        color_converter = mock()
        when(color_converter).to_color({
            test_group: test_color_text
        }).thenReturn(test_color)
        color_searcher = ColorSearcher(
            re.compile("(?P<%s>#[0-9a-fA-F]{2})" % test_group),
            color_converter)

        results = [result for result in color_searcher.search(view, region)]
        self.assertEqual([(NormalizedRegion(begin + 1, end - 1), test_color, {
            test_group: test_color_text
        })], results)
Exemplo n.º 2
0
 def test_inversed_region(self):
     """Test inversed region."""
     a = 20  # pylint: disable=invalid-name
     b = 10  # pylint: disable=invalid-name
     region = NormalizedRegion(_RegionMock(a, b))
     self.assertEqual(b, region.a)
     self.assertEqual(a, region.b)
     self.assertEqual(10, region.length())
Exemplo n.º 3
0
 def test_begin_end_inversed(self):
     """Test normal region."""
     a = 20  # pylint: disable=invalid-name
     b = 10  # pylint: disable=invalid-name
     region = NormalizedRegion(a, b)
     self.assertEqual(b, region.a)
     self.assertEqual(a, region.b)
     self.assertEqual(10, region.length())
Exemplo n.º 4
0
 def test_region_call(self):
     """Test region call."""
     a = 10  # pylint: disable=invalid-name
     b = 20  # pylint: disable=invalid-name
     mock_region = mock()
     region = NormalizedRegion(_RegionMock(a, b))
     when(sublime).Region(a, b).thenReturn(mock_region)
     self.assertEqual(mock_region, region.region())
    def test_highlight(self):  # pylint: disable=no-self-use
        """Check highlighting a region."""
        view = mock()
        icon_factory = mock()
        test_style = "circle"
        color_highlighter = GutterIconsColorHighlighter(
            view, test_style, icon_factory, self.test_name, False)

        test_color = "test"
        begin = 4
        end = begin + len(test_color)
        normalized_region = NormalizedRegion(begin, end)
        region = mock()
        when(sublime).Region(begin, end).thenReturn(region)

        test_path = "test/path"
        when(icon_factory).get_icon_path(test_style,
                                         test_color).thenReturn(test_path)

        color_highlighter.highlight_region(None,
                                           (normalized_region, test_color))
        verify(view).add_regions(
            GutterIconsColorHighlighter.region_name_template %
            (self.test_name, normalized_region.a, normalized_region.b),
            [region], GutterIconsColorHighlighter.region_scope, test_path,
            sublime.HIDDEN)
Exemplo n.º 6
0
    def test_highlight_left(self):  # pylint: disable=no-self-use
        """Test highlighting a region adds a phantom to the left of the color to the view."""
        view = mock()

        test_color = "test"
        begin = 4
        end = begin + len(test_color)
        region = mock()
        when(sublime).Region(begin, begin).thenReturn(region)

        html = '''
<body>
    <style>
        * {
            background-color: test;
        }
    </style>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</body>
'''
        phantom_id = 95
        when(view).add_phantom(
            PhantomColorHighlighter.phantom_key_template %
            (self.test_name, begin, end), region, html, sublime.LAYOUT_INLINE,
            None).thenReturn(phantom_id)

        PhantomColorHighlighter(view, self.test_name, "left", 5,
                                False).highlight_region(
                                    None,
                                    (NormalizedRegion(begin, end), test_color))
        verify(view).add_phantom(
            PhantomColorHighlighter.phantom_key_template %
            (self.test_name, begin, end), region, html, sublime.LAYOUT_INLINE,
            None)
    def test_selection_changed(self):
        """Test modify selection."""
        color_searcher = mock()
        view = mock()
        color_highlighter = mock()
        color_selection_listener = ColorSelectionListener(
            color_searcher, view, color_highlighter)

        color_region1 = (NormalizedRegion(10, 11), 1)
        color_region2 = (NormalizedRegion(11, 12), 2)
        color_region3 = (NormalizedRegion(17, 21), 3)

        sel_region1 = NormalizedRegion(10, 13)
        sel_region2 = NormalizedRegion(16, 20)
        sel_line1 = NormalizedRegion(14, 15)
        sel_line2 = NormalizedRegion(16, 17)
        when(view).lines(sel_region1).thenReturn([sel_line1])
        when(view).lines(sel_region2).thenReturn([sel_line2])
        when(view).sel().thenReturn([sel_region1, sel_region2])
        when(color_searcher).search(view, sel_line1).thenReturn(
            [color_region1 + (None, ), color_region2 + (None, )])
        when(color_searcher).search(view, sel_line2).thenReturn(
            [color_region3 + (None, )])
        color_selection_listener.on_selection_modified()
        color_regions = captor()
        verify(color_highlighter).highlight_regions(color_regions)
        self.assertEqual([color_region1, color_region2, color_region3],
                         [region for region in color_regions.value])
Exemplo n.º 8
0
 def test_unhighlight_region(self):  # pylint: disable=no-self-use
     """Test unhighlight a region."""
     region = NormalizedRegion(10, 20)
     view = mock()
     color_highlighter = ColorSchemeColorHighlighter(
         view, "filled", None, self.test_name, False)
     color_highlighter.unhighlight_region(None, (region, None))
     verify(view).erase_regions(
         ColorSchemeColorHighlighter.region_name_template %
         (self.test_name, region.a, region.b))
    def test_unhighlight(self):  # pylint: disable=no-self-use
        """Check unhighlighting a region."""
        view = mock()
        color_highlighter = GutterIconsColorHighlighter(
            view, "circle", mock(), self.test_name, False)
        normalized_region = NormalizedRegion(4, 9)

        color_highlighter.unhighlight_region(None, (normalized_region, None))
        verify(view).erase_regions(
            GutterIconsColorHighlighter.region_name_template %
            (self.test_name, normalized_region.a, normalized_region.b))
    def test_selection_no_intersections(self):
        """Test modify selection with color searher returning regions with no intersections with the selection."""
        color_searcher = mock()
        view = mock()
        color_highlighter = mock()
        color_selection_listener = ColorSelectionListener(
            color_searcher, view, color_highlighter)

        color_region = (NormalizedRegion(4, 5), 1)

        sel_region = NormalizedRegion(10, 13)
        sel_line = NormalizedRegion(14, 15)
        when(view).lines(sel_region).thenReturn([sel_line])
        when(view).sel().thenReturn([sel_region])
        when(color_searcher).search(view, sel_line).thenReturn(
            [color_region + (None, )])
        color_selection_listener.on_selection_modified()
        color_regions = captor()
        verify(color_highlighter).highlight_regions(color_regions)
        self.assertEqual([], [region for region in color_regions.value])
Exemplo n.º 11
0
    def test_search_found_multiple(self):  # pylint: disable=too-many-locals
        """Test found multiple colors."""
        begin = 5
        end = 15
        region = NormalizedRegion(begin, end)
        whole_region = mock()
        when(sublime).Region(begin, end).thenReturn(whole_region)
        color_region1 = mock()
        when(sublime).Region(begin + 1, begin + 4).thenReturn(color_region1)
        color_region2 = mock()
        when(sublime).Region(end - 4, end - 1).thenReturn(color_region2)
        view = mock()
        test_color_text1 = "#FA"
        test_color_text2 = "#E5"
        when(view).substr(whole_region).thenReturn(
            " %s  %s " % (test_color_text1, test_color_text2))
        when(view).substr(color_region1).thenReturn(test_color_text1)
        when(view).substr(color_region2).thenReturn(test_color_text2)
        test_color1 = "#FB"
        test_color2 = "#DB"
        test_group = "test_group"
        color_converter = mock()
        when(color_converter).to_color({
            test_group: test_color_text1
        }).thenReturn(test_color1)
        when(color_converter).to_color({
            test_group: test_color_text2
        }).thenReturn(test_color2)
        color_searcher = ColorSearcher(
            re.compile("(?P<%s>#[0-9a-fA-F]{2})" % test_group),
            color_converter)

        results = [result for result in color_searcher.search(view, region)]
        self.assertEqual(
            [(NormalizedRegion(begin + 1, begin + 4), test_color1, {
                test_group: test_color_text1
            }),
             (NormalizedRegion(end - 4, end - 1), test_color2, {
                 test_group: test_color_text2
             })], results)
Exemplo n.º 12
0
    def test_search_not_found(self):
        """Test search."""
        begin = 5
        end = 10
        region = NormalizedRegion(begin, end)
        whole_region = mock()
        when(sublime).Region(begin, end).thenReturn(whole_region)
        view = mock()
        when(view).substr(ANY).thenReturn(" " * 30)

        color_searcher = ColorSearcher(re.compile("#[0-9a-fA-F]{2}"), mock())

        results = [result for result in color_searcher.search(view, region)]
        self.assertEqual([], results)
    def test_deduplicate_lines(self):
        """Test that having two selections on the same line yields that line only one time ."""
        color_searcher = mock()
        view = mock()
        color_highlighter = mock()
        color_selection_listener = ColorSelectionListener(
            color_searcher, view, color_highlighter)

        color_region = (NormalizedRegion(11, 14), 1)

        sel_region1 = NormalizedRegion(10, 11)
        sel_region2 = NormalizedRegion(12, 13)
        sel_line = NormalizedRegion(14, 15)
        when(view).lines(sel_region1).thenReturn([sel_line])
        when(view).lines(sel_region2).thenReturn([sel_line])
        when(view).sel().thenReturn([sel_region1, sel_region2])
        when(color_searcher).search(view, sel_line).thenReturn(
            [color_region + (None, )])
        color_selection_listener.on_selection_modified()
        color_regions = captor()
        verify(color_highlighter).highlight_regions(color_regions)
        self.assertEqual([color_region],
                         [region for region in color_regions.value])
Exemplo n.º 14
0
    def test_highlight_regions(self):  # pylint: disable=no-self-use,too-many-locals
        """Test highlight multiple regions."""
        region1_a = 10
        region1_b = 20
        sublime_region1 = mock()
        when(sublime).Region(region1_a, region1_b).thenReturn(sublime_region1)
        color1 = "color 1"
        region1 = NormalizedRegion(region1_a, region1_b)
        region2_a = 30
        region2_b = 40
        sublime_region2 = mock()
        when(sublime).Region(region2_a, region2_b).thenReturn(sublime_region2)
        color2 = "color 2"
        region2 = NormalizedRegion(region2_a, region2_b)

        color_scheme_builder = mock()
        scope1 = mock()
        scope2 = mock()
        when(color_scheme_builder).get_scopes(ANY,
                                              ANY).thenReturn([scope1, scope2])
        view = mock()
        color_highlighter = ColorSchemeColorHighlighter(
            view, "filled", color_scheme_builder, self.test_name, False)
        context = {}
        color_highlighter.highlight_region(context, (region1, color1))
        color_highlighter.highlight_region(context, (region2, color2))
        color_highlighter.highlight_regions_done(context)
        verify(color_scheme_builder).get_scopes([color1, color2], False)
        verify(view).add_regions(
            ColorSchemeColorHighlighter.region_name_template %
            (self.test_name, region1.a, region1.b), [sublime_region1], scope1,
            "", sublime.DRAW_NO_OUTLINE)
        verify(view).add_regions(
            ColorSchemeColorHighlighter.region_name_template %
            (self.test_name, region2.a, region2.b), [sublime_region2], scope2,
            "", sublime.DRAW_NO_OUTLINE)
Exemplo n.º 15
0
    def test_search_found_bad(self):
        """Test found color which could not be converted to a canonical form."""
        begin = 5
        end = 10
        region = NormalizedRegion(begin, end)
        whole_region = mock()
        when(sublime).Region(begin, end).thenReturn(whole_region)
        color_region = mock()
        when(sublime).Region(begin + 1, end - 1).thenReturn(color_region)
        view = mock()
        test_color_text = "#FA"
        when(view).substr(whole_region).thenReturn(" %s " % test_color_text)
        when(view).substr(color_region).thenReturn(test_color_text)
        color_searcher = ColorSearcher(re.compile("#[0-9a-fA-F]{2}"), mock())

        results = [result for result in color_searcher.search(view, region)]
        self.assertEqual([], results)
Exemplo n.º 16
0
    def test_unhighlight(self):  # pylint: disable=no-self-use
        """Test unhighlighting a region removes the added phantom from the view."""
        view = mock()
        color_highlighter = PhantomColorHighlighter(view, self.test_name,
                                                    "below", 1, False)

        begin = 4
        end = 9
        region = mock()
        when(sublime).Region(begin, end).thenReturn(region)

        phantom_id = 95
        when(view).add_phantom(ANY, ANY, ANY, ANY, ANY).thenReturn(phantom_id)

        color_highlighter.unhighlight_region(
            None, (NormalizedRegion(begin, end), None))
        verify(view).erase_phantoms(
            PhantomColorHighlighter.phantom_key_template %
            (self.test_name, begin, end))
Exemplo n.º 17
0
 def test_text_highlight(self):  # pylint: disable=no-self-use
     """Test highlight a region with text style."""
     region_a = 10
     region_b = 20
     sublime_region = mock()
     when(sublime).Region(region_a, region_b).thenReturn(sublime_region)
     color = "color"
     region = NormalizedRegion(region_a, region_b)
     color_scheme_builder = mock()
     scope = mock()
     when(color_scheme_builder).get_scopes(ANY, ANY).thenReturn([scope])
     view = mock()
     color_highlighter = ColorSchemeColorHighlighter(
         view, "text", color_scheme_builder, self.test_name, False)
     context = {}
     color_highlighter.highlight_region(context, (region, color))
     color_highlighter.highlight_regions_done(context)
     verify(color_scheme_builder).get_scopes([color], True)
     verify(view).add_regions(
         ColorSchemeColorHighlighter.region_name_template %
         (self.test_name, region.a, region.b), [sublime_region], scope, "",
         sublime.DRAW_NO_OUTLINE)
Exemplo n.º 18
0
 def test_hash(self):
     """Test region hash operator."""
     region = NormalizedRegion(10, 20)
     self.assertEqual(30, hash(region))
Exemplo n.º 19
0
 def test_str(self):
     """Test region string operator."""
     region = NormalizedRegion(10, 20)
     self.assertEqual("(10, 20)", str(region))
Exemplo n.º 20
0
 def test_equal(self):
     """Test region equals operator."""
     region = NormalizedRegion(10, 20)
     other_region = NormalizedRegion(10, 30)
     self.assertEqual(region, region)
     self.assertNotEqual(region, other_region)