File Coverage

Timezone.xsi
Criterion Covered Total %
statement 41 41 100.0
branch 83 158 52.5
condition n/a
subroutine n/a
pod n/a
total 124 199 62.3


line stmt bran cond sub pod time code
1             MODULE = Time::XS PACKAGE = Time::XS::Timezone
2             PROTOTYPES: DISABLE
3              
4 2467 50         string name (TimezoneSP THIS) { RETVAL = THIS->name; }
5              
6 1229           bool is_local (TimezoneSP THIS) { RETVAL = THIS->is_local; }
7              
8             Hash export (TimezoneSP THIS) {
9 1228 50         RETVAL = Hash::create();
10            
11 1228 50         RETVAL.store("name", Simple(string_view(THIS->name.data(), THIS->name.length())));
    50          
12 1228 100         RETVAL.store("is_local", Simple(THIS->is_local ? 1 : 0));
    50          
    50          
13            
14 2456 50         auto future = Hash::create();
    50          
15 1228 100         future.store("hasdst", Simple(THIS->future.hasdst ? 1 : 0));
    50          
    50          
16            
17 2456 50         auto outer = Hash::create();
    50          
18 1228 50         outer.store("abbrev", Simple(string_view(THIS->future.outer.abbrev, strlen(THIS->future.outer.abbrev))));
    50          
19 1228 50         outer.store("offset", Simple(THIS->future.outer.offset));
    50          
20 1228 50         outer.store("gmt_offset", Simple(THIS->future.outer.gmt_offset));
    50          
21 1228 50         outer.store("isdst", Simple(THIS->future.outer.isdst));
    50          
22 1228 50         future.store("outer", Ref::create(outer));
    50          
23            
24 1228 100         if (THIS->future.hasdst) {
25 890 50         auto outer_end = Hash::create();
26 445 50         outer_end.store("mon", Simple(THIS->future.outer.end.mon));
    50          
27 445 50         outer_end.store("week", Simple(THIS->future.outer.end.yday));
    50          
28 445 50         outer_end.store("day", Simple(THIS->future.outer.end.wday));
    50          
29 445 50         outer_end.store("hour", Simple(THIS->future.outer.end.hour));
    50          
30 445 50         outer_end.store("min", Simple(THIS->future.outer.end.min));
    50          
31 445 50         outer_end.store("sec", Simple(THIS->future.outer.end.sec));
    50          
32 445 50         outer.store("end", Ref::create(outer_end));
    50          
33            
34 890 50         auto inner = Hash::create();
35 445 50         inner.store("abbrev", Simple(string_view(THIS->future.inner.abbrev, strlen(THIS->future.inner.abbrev))));
    50          
36 445 50         inner.store("offset", Simple(THIS->future.inner.offset));
    50          
37 445 50         inner.store("gmt_offset", Simple(THIS->future.inner.gmt_offset));
    50          
38 445 50         inner.store("isdst", Simple(THIS->future.inner.isdst));
    50          
39            
40 890 50         auto inner_end = Hash::create();
41 445 50         inner_end.store("mon", Simple(THIS->future.inner.end.mon));
    50          
42 445 50         inner_end.store("week", Simple(THIS->future.inner.end.yday));
    50          
43 445 50         inner_end.store("day", Simple(THIS->future.inner.end.wday));
    50          
44 445 50         inner_end.store("hour", Simple(THIS->future.inner.end.hour));
    50          
45 445 50         inner_end.store("min", Simple(THIS->future.inner.end.min));
    50          
46 445 50         inner_end.store("sec", Simple(THIS->future.inner.end.sec));
    50          
47 445 50         inner.store("end", Ref::create(inner_end));
    50          
48            
49 445 50         future.store("inner", Ref::create(inner));
    50          
50             }
51 1228 50         RETVAL.store("future", Ref::create(future));
    50          
52            
53 2456 50         auto trans = Array::create();
    50          
54 103011 100         for (uint32_t i = 0; i < THIS->trans_cnt; ++i) trans.push(Ref::create(export_transition(THIS->trans[i], false)));
    50          
    50          
    50          
55 1228 50         RETVAL.store("transitions", Ref::create(trans));
    50          
56            
57 1228 50         RETVAL.store("past", Ref::create(export_transition(THIS->trans[0], true)));
    50          
    50          
58             }