HTTP-StructuredFieldValues

 view release on metacpan or  search on metacpan

t/generated/display-string.t  view on Meta::CPAN

            diag("Expected: ", explain($canonical));
            diag("Input was: ", explain($expected));
        };
    }
};

# Test 13: bad display string escaping
{
    my $test_name = 'bad display string escaping - must fail';
    my $input = "%\"foo %a";
    
    eval { decode_item($input); };
    ok($@, $test_name) or diag("Expected failure but got success");
}

# Test 14: bad display string utf-8 (invalid 2-byte seq)
{
    my $test_name = 'bad display string utf-8 (invalid 2-byte seq) - must fail';
    my $input = "%\"%c3%28\"";
    
    eval { decode_item($input); };
    ok($@, $test_name) or diag("Expected failure but got success");
}

# Test 15: bad display string utf-8 (invalid sequence id)
{
    my $test_name = 'bad display string utf-8 (invalid sequence id) - must fail';
    my $input = "%\"%a0%a1\"";
    
    eval { decode_item($input); };
    ok($@, $test_name) or diag("Expected failure but got success");
}

# Test 16: bad display string utf-8 (invalid hex)
{
    my $test_name = 'bad display string utf-8 (invalid hex) - must fail';
    my $input = "%\"%g0%1w\"";
    
    eval { decode_item($input); };
    ok($@, $test_name) or diag("Expected failure but got success");
}

# Test 17: bad display string utf-8 (invalid 3-byte seq)
{
    my $test_name = 'bad display string utf-8 (invalid 3-byte seq) - must fail';
    my $input = "%\"%e2%28%a1\"";
    
    eval { decode_item($input); };
    ok($@, $test_name) or diag("Expected failure but got success");
}

# Test 18: bad display string utf-8 (invalid 4-byte seq)
{
    my $test_name = 'bad display string utf-8 (invalid 4-byte seq) - must fail';
    my $input = "%\"%f0%28%8c%28\"";
    
    eval { decode_item($input); };
    ok($@, $test_name) or diag("Expected failure but got success");
}

# Test 19: BOM in display string
subtest "BOM in display string" => sub {
    my $test_name = "BOM in display string";
    my $input = "%\"BOM: %ef%bb%bf\"";
    my $expected = { _type => 'displaystring', value => 'BOM: ' };
    my $canonical = $input;
    
    my $result = eval { decode_item($input); };
    
    if ($@) {
        fail($test_name);
        diag("Decode error: $@");
        diag("Input was: $input");
    } else {
        is_deeply($result, $expected, $test_name) or do {
            diag("Got: ", explain($result));
            diag("Expected: ", explain($expected));
            diag("Input was: ", $input);
        };
    }
    $result = eval { encode($expected); };
    if ($@) {
        fail($test_name);
        diag("Encode error:", $@);
        diag("Input was: ", explain($expected));
    } else {
        is($result, $canonical, $test_name) or do {
            diag("Got: ", explain($result));
            diag("Expected: ", explain($canonical));
            diag("Input was: ", explain($expected));
        };
    }
};

# Test 20: two lines display string
{
    my $test_name = 'two lines display string - can fail';
    my $input = "%\"foo,bar\"";
    
    eval { decode_item($input); };
    pass($test_name); # Can fail tests always pass
}



( run in 1.704 second using v1.01-cache-2.11-cpan-13bb782fe5a )