1use strict;
2use warnings;
3use Perl::Lint::Policy::ValuesAndExpressions::ProhibitNoisyQuotes;
4use t::Policy::Util qw/fetch_violations/;
5use Test::Base::Less;
6
7my $class_name = 'ValuesAndExpressions::ProhibitNoisyQuotes';
8
9filters {
10    params => [qw/eval/], # TODO wrong!
11};
12
13for my $block (blocks) {
14    my $violations = fetch_violations($class_name, $block->input, $block->params);
15    is scalar @$violations, $block->failures, $block->dscr;
16}
17
18done_testing;
19
20__DATA__
21
22===
23--- dscr: Basic passing
24--- failures: 0
25--- params:
26--- input
27$var = q{'};
28$var = q{"};
29$var = q{!!};
30$var = q{||};
31$var = "!!!";
32$var = '!!!';
33$var = 'a';
34$var = "a";
35$var = '1';
36$var = "1";
37
38===
39--- dscr: Basic failure
40--- failures: 4
41--- params:
42--- input
43$var = "!";
44$var = '!';
45$var = '!!';
46$var = "||";
47
48===
49--- dscr: overload pragma
50--- failures: 0
51--- params:
52--- input
53use overload '""';
54
55===
56--- dscr: Parentheses, braces, brackets
57--- failures: 0
58--- params:
59--- input
60$var = '(';
61$var = ')';
62$var = '{';
63$var = '}';
64$var = '[';
65$var = ']';
66
67$var = '{(';
68$var = ')}';
69$var = '[{';
70$var = '[}';
71$var = '[(';
72$var = '])';
73
74$var = "(";
75$var = ")";
76$var = "{";
77$var = "}";
78$var = "[";
79$var = "]";
80
81$var = "{(";
82$var = ")]";
83$var = "({";
84$var = "}]";
85$var = "{[";
86$var = "]}";
87
88===
89--- dscr: no lint
90--- failures: 3
91--- params:
92--- input
93$var = "!";
94$var = '!';
95$var = '!!'; ## no lint
96$var = "||";
97