Пример #1
0
static moment_t
THX_moment_with_week(pTHX_ const moment_t *mt, IV v) {
    int y, d;

    dt_to_ywd(moment_local_dt(mt), &y, NULL, &d);
    if (v < 1 || v > 52) {
        int wiy = dt_weeks_in_year(y);
        if (v < 1 || v > wiy)
            croak("Parameter 'week' is out of the range [1, %d]", wiy);
    }
    return THX_moment_with_local_dt(aTHX_ mt, dt_from_ywd(y, (int)v, d));
}
Пример #2
0
Файл: ywd.c Проект: chansen/c-dt
int 
main() {
    int i, ntests;

    ntests = sizeof(tests) / sizeof(*tests);
    for (i = 0; i < ntests; i++) {
        const struct test t = tests[i];

        {
            dt_t got = dt_rdn(dt_from_ywd(t.y, t.w, t.d));
            cmp_ok(got, "==", t.rdn, "dt_rdn(dt_from_ywd(%d, %d, %d))", t.y, t.w, t.d);
        }

        {
            int y, w, d;
            dt_to_ywd(dt_from_rdn(t.rdn), &y, &w, &d);
            if (!ok((y == t.y && w == t.w && d == t.d), "dt_to_ywd(dt_from_rdn(%d))", t.rdn)) {
                diag("     got: %.4d-W%.2d-%d", y, w, d);
                diag("     exp: %.4d-W%.2d-%d", t.y, t.w, t.d);
            }
        }

        {
            int got = dt_woy(dt_from_rdn(t.rdn));
            cmp_ok(got, "==", t.w, "dt_woy(dt_from_rdn(%d))", t.rdn);
        }

        {
            int got = dt_yow(dt_from_rdn(t.rdn));
            cmp_ok(got, "==", t.y, "dt_yow(dt_from_rdn(%d))", t.rdn);
        }

        {
            int got = dt_dow(dt_from_rdn(t.rdn));
            cmp_ok(got, "==", t.d, "dt_dow(dt_from_rdn(%d))", t.rdn);
        }

        {
            ok(dt_valid_ywd(t.y, t.w, t.d), "dt_valid_ywd(%d, %d, %d)", t.y, t.w, t.d);
        }

    }
    done_testing();
}