Annotation of nono/vm/test_windrv.cpp, revision 1.1.1.1

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2023 nono project
                      4: // Licensed under nono-license.txt
                      5: //
                      6: 
                      7: #include "header.h"
                      8: #include "mystring.h"
                      9: 
                     10: // 本物の方を使ってしまうと芋づるでリンクが解決できないのでダミーを用意。
                     11: class WindrvDevice
                     12: {
                     13:  public:
                     14:        static bool MatchWildcard(const std::string&, const std::string&);
                     15: };
                     16: class Human68k
                     17: {
                     18:  public:
                     19:        static uint32 Unixtime2DateTime(time_t);
                     20:        static time_t DateTime2Unixtime(uint32);
                     21: };
                     22: 
                     23: #define TEST_WINDRV
                     24: #include "windrv.cpp"
                     25: #include "test_tool.cpp"
                     26: 
                     27: static void
                     28: test_MatchWildcard()
                     29: {
                     30:        struct {
                     31:                const char *pname;
                     32:                const char *fname;
                     33:                bool expected;
                     34:        } table[] = {
                     35:                // Pattern                              Name                                    Expected
                     36:                { "?.com",                              "a.com",                                true },
                     37:                { "??.com",                             "a.com",                                true },
                     38:                { "?.com",                              "ab.com",                               false },
                     39: 
                     40:                { "??",                                 "a",                                    true },
                     41:                { "??",                                 "ab",                                   true },
                     42:                { "??",                                 "abc",                                  false },
                     43: 
                     44:                { "?",                                  "a.s",                                  false },
                     45:                { "???",                                "a.s",                                  false },
                     46:                { "?.?",                                "a.s",                                  true },
                     47: 
                     48:                { "futype.???",                 "futype.x",                             true },
                     49:                { "futype.???",                 "futype.xy",                    true },
                     50:                { "futype.???",                 "futype.xyz",                   true },
                     51:                { "futype.???",                 "futype",                               true },
                     52:                { "futype.???",                 "abcdef.xxx",                   false },
                     53:        };
                     54: 
                     55:        for (int i = 0; i < countof(table); i++) {
                     56:                std::string pname(table[i].pname);
                     57:                std::string fname(table[i].fname);
                     58:                bool expected = table[i].expected;
                     59:                char where[256];
                     60:                snprintf(where, sizeof(where), "\"%s\", \"%s\"",
                     61:                        pname.c_str(), fname.c_str());
                     62: 
                     63:                bool actual = WindrvDevice::MatchWildcard(fname, pname);
                     64:                xp_eq(expected, actual, where);
                     65:        }
                     66: }
                     67: 
                     68: static struct {
                     69:        time_t unixtime;
                     70:        uint32 dostime;
                     71: } table_time[] = {
                     72:        {  315500400,   0x00210000 },   // 1980-01-01 00:00:00 (+0900 JST)
                     73:        { 1702990056,   0x5793adf2 },   // 2023-12-19 21:47:36 (+0900 JST)
                     74: };
                     75: 
                     76: static void
                     77: test_Unixtime2DateTime()
                     78: {
                     79:        for (const auto& a : table_time) {
                     80:                time_t utime = a.unixtime;
                     81:                uint32 dtime = a.dostime;
                     82: 
                     83:                auto dtime_actual = Human68k::Unixtime2DateTime(utime);
                     84:                xp_eq(dtime, dtime_actual);
                     85:        }
                     86: 
                     87:        // 1980 年以前は 1980 年に張り付ける
                     88:        xp_eq(0x00210000, Human68k::Unixtime2DateTime(315446400));
                     89: }
                     90: 
                     91: static void
                     92: test_DateTime2Unixtime()
                     93: {
                     94:        for (const auto& a : table_time) {
                     95:                time_t utime = a.unixtime;
                     96:                uint32 dtime = a.dostime;
                     97: 
                     98:                auto utime_actual = Human68k::DateTime2Unixtime(dtime);
                     99:                xp_eq(utime, utime_actual);
                    100:        }
                    101: }
                    102: 
                    103: int
                    104: main(int ac, char *av[])
                    105: {
                    106:        test_MatchWildcard();
                    107:        test_Unixtime2DateTime();
                    108:        test_DateTime2Unixtime();
                    109:        return 0;
                    110: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.