File: regexp_obj.t

package info (click to toggle)
libmongodb-perl 2.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 8,316 kB
  • sloc: perl: 12,983; makefile: 22; sh: 11
file content (68 lines) | stat: -rw-r--r-- 1,788 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#  Copyright 2018 - present MongoDB, Inc.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

use strict;
use warnings;
use Test::More;
use Test::Fatal;

use MongoDB;
use MongoDB::BSON::Regexp;

use lib "t/lib";
use MongoDBTest qw/skip_unless_mongod build_client get_test_db/;

skip_unless_mongod();

$ENV{PERL_MONGO_NO_DEP_WARNINGS} = 1;

my $conn = build_client();

{
    my $regexp = MongoDB::BSON::Regexp->new( pattern => 'foo*bar' );
    is $regexp->pattern, 'foo*bar';
}

{ 
    my $regexp = MongoDB::BSON::Regexp->new( pattern => 'bar?baz', flags => 'msi' );
    is $regexp->pattern, 'bar?baz';
    is $regexp->flags, 'ims';
}

like(
    exception { my $regexp = MongoDB::BSON::Regexp->new( pattern => 'narf', flags => 'xyz' ); },
    qr/Regex flag \w is not supported/,
    'exception on invalid flag'
);


{
    my $testdb = get_test_db($conn);
    my $coll = $testdb->get_collection("test_collection");

    $coll->insert_one( {
        _id => 'spl0rt',
        foo => MongoDB::BSON::Regexp->new( pattern => 'foo.+bar', flags => 'ims' ) } 
    );

    my $doc = $coll->find_one( { _id => 'spl0rt' } );
    ok $doc->{foo};
    ok ref $doc->{foo};
    isa_ok $doc->{foo}, 'BSON::Regex';

    is $doc->{foo}->pattern, 'foo.+bar';
    is $doc->{foo}->flags, 'ims';
}

done_testing;