Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improved test coverage of func.c and hash.c. (CVS 1772) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
0c999f28137bd82ba24dd263bab30d22 |
User & Date: | drh 2004-06-30 03:08:25.000 |
Context
2004-06-30
| ||
04:02 | Improve test coverage of util.c (CVS 1773) (check-in: 68ac322137 user: drh tags: trunk) | |
03:08 | Improved test coverage of func.c and hash.c. (CVS 1772) (check-in: 0c999f2813 user: drh tags: trunk) | |
02:43 | Allow strings that look like integers to be inserted into IPK columns in a UTF-16 database. (CVS 1771) (check-in: e5e3976403 user: danielk1977 tags: trunk) | |
Changes
Changes to src/hash.c.
︙ | ︙ | |||
8 9 10 11 12 13 14 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This is the implementation of generic hash-tables ** used in SQLite. ** | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This is the implementation of generic hash-tables ** used in SQLite. ** ** $Id: hash.c,v 1.13 2004/06/30 03:08:25 drh Exp $ */ #include "sqliteInt.h" #include <assert.h> /* Turn bulk memory into a hash table object by initializing the ** fields of the Hash structure. ** |
︙ | ︙ | |||
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | } sqliteFree(elem); elem = next_elem; } pH->count = 0; } /* ** Hash and comparison functions when the mode is SQLITE_HASH_INT */ static int intHash(const void *pKey, int nKey){ return nKey ^ (nKey<<8) ^ (nKey>>8); } static int intCompare(const void *pKey1, int n1, const void *pKey2, int n2){ return n2 - n1; } #if 0 /* NOT USED */ /* ** Hash and comparison functions when the mode is SQLITE_HASH_POINTER */ static int ptrHash(const void *pKey, int nKey){ uptr x = Addr(pKey); | > > | 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | } sqliteFree(elem); elem = next_elem; } pH->count = 0; } #if 0 /* NOT USED */ /* ** Hash and comparison functions when the mode is SQLITE_HASH_INT */ static int intHash(const void *pKey, int nKey){ return nKey ^ (nKey<<8) ^ (nKey>>8); } static int intCompare(const void *pKey1, int n1, const void *pKey2, int n2){ return n2 - n1; } #endif #if 0 /* NOT USED */ /* ** Hash and comparison functions when the mode is SQLITE_HASH_POINTER */ static int ptrHash(const void *pKey, int nKey){ uptr x = Addr(pKey); |
︙ | ︙ | |||
127 128 129 130 131 132 133 | ** single parameter "keyClass". The return value of hashFunction() ** is a pointer to another function. Specifically, the return value ** of hashFunction() is a pointer to a function that takes two parameters ** with types "const void*" and "int" and returns an "int". */ static int (*hashFunction(int keyClass))(const void*,int){ switch( keyClass ){ | | | | 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | ** single parameter "keyClass". The return value of hashFunction() ** is a pointer to another function. Specifically, the return value ** of hashFunction() is a pointer to a function that takes two parameters ** with types "const void*" and "int" and returns an "int". */ static int (*hashFunction(int keyClass))(const void*,int){ switch( keyClass ){ /* case SQLITE_HASH_INT: return &intHash; // NOT USED */ /* case SQLITE_HASH_POINTER: return &ptrHash; // NOT USED */ case SQLITE_HASH_STRING: return &strHash; case SQLITE_HASH_BINARY: return &binHash;; default: break; } return 0; } /* ** Return a pointer to the appropriate hash function given the key class. ** ** For help in interpreted the obscure C code in the function definition, ** see the header comment on the previous function. */ static int (*compareFunction(int keyClass))(const void*,int,const void*,int){ switch( keyClass ){ /* case SQLITE_HASH_INT: return &intCompare; // NOT USED */ /* case SQLITE_HASH_POINTER: return &ptrCompare; // NOT USED */ case SQLITE_HASH_STRING: return &strCompare; case SQLITE_HASH_BINARY: return &binCompare; default: break; } return 0; } |
︙ | ︙ | |||
350 351 352 353 354 355 356 | pH->first = new_elem; } pH->ht[h].count++; pH->ht[h].chain = new_elem; new_elem->data = data; return 0; } | < < < | 352 353 354 355 356 357 358 | pH->first = new_elem; } pH->ht[h].count++; pH->ht[h].chain = new_elem; new_elem->data = data; return 0; } |
Changes to test/enc3.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # #*********************************************************************** # This file implements regression tests for SQLite library. # # The focus of this file is testing of the proper handling of conversions # to the native text representation. # | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # #*********************************************************************** # This file implements regression tests for SQLite library. # # The focus of this file is testing of the proper handling of conversions # to the native text representation. # # $Id: enc3.test,v 1.2 2004/06/30 03:08:25 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl do_test enc3-1.1 { execsql { PRAGMA encoding=utf16le; |
︙ | ︙ | |||
32 33 34 35 36 37 38 39 40 41 | } } {abc'123 5} do_test enc3-1.3 { execsql { SELECT quote(x) || ' ' || quote(y) FROM t1 } } {{'abc''123' 5}} finish_test | > > > > > > > > > > > > | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | } } {abc'123 5} do_test enc3-1.3 { execsql { SELECT quote(x) || ' ' || quote(y) FROM t1 } } {{'abc''123' 5}} do_test enc3-1.4 { execsql { DELETE FROM t1; INSERT INTO t1 VALUES(x'616263646566',NULL); SELECT * FROM t1 } } {abcdef {}} do_test enc3-1.5 { execsql { SELECT quote(x) || ' ' || quote(y) FROM t1 } } {{X'616263646566' NULL}} finish_test |
Changes to test/types.test.
︙ | ︙ | |||
8 9 10 11 12 13 14 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. Specfically # it tests that the different storage classes (integer, real, text etc.) # all work correctly. # | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. Specfically # it tests that the different storage classes (integer, real, text etc.) # all work correctly. # # $Id: types.test,v 1.9 2004/06/30 03:08:25 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Tests in this file are organized roughly as follows: # # types-1.*.*: Test that values are stored using the expected storage |
︙ | ︙ | |||
56 57 58 59 60 61 62 63 64 65 66 67 68 69 | { 5 integer integer text integer } { '5.0' integer real text text } { '-5.0' integer real text text } { '-5.0' integer real text text } { '5' integer integer text text } { 'abc' text text text text } { NULL null null null null } } # This code tests that the storage classes specified above (in the $values # table) are correctly assigned when values are inserted using a statement # of the form: # # INSERT INTO <table> VALUE(<values>); | > | 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | { 5 integer integer text integer } { '5.0' integer real text text } { '-5.0' integer real text text } { '-5.0' integer real text text } { '5' integer integer text text } { 'abc' text text text text } { NULL null null null null } { X'00' blob blob blob blob } } # This code tests that the storage classes specified above (in the $values # table) are correctly assigned when values are inserted using a statement # of the form: # # INSERT INTO <table> VALUE(<values>); |
︙ | ︙ |