summaryrefslogtreecommitdiff
path: root/mssql/types/test.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'mssql/types/test.hxx')
-rw-r--r--mssql/types/test.hxx517
1 files changed, 0 insertions, 517 deletions
diff --git a/mssql/types/test.hxx b/mssql/types/test.hxx
deleted file mode 100644
index 5d651a8..0000000
--- a/mssql/types/test.hxx
+++ /dev/null
@@ -1,517 +0,0 @@
-// file : mssql/types/test.hxx
-// license : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef TEST_HXX
-#define TEST_HXX
-
-#ifdef _WIN32
-# ifndef WIN32_LEAN_AND_MEAN
-# define WIN32_LEAN_AND_MEAN
-# endif
-# include <windows.h> // GUID
-#elif defined(HOST_WIN32)
-typedef struct _GUID
-{
- unsigned int Data1;
- unsigned short Data2;
- unsigned short Data3;
- unsigned char Data4[8];
-} GUID;
-#endif
-
-#include <common/config.hxx> // HAVE_CXX11
-
-#include <string>
-#include <vector>
-#include <memory> // std::auto_ptr
-#include <cstring> // std::memcmp, std::memcpy, std::str[n]cmp, std::strlen
-#include <cwchar> // std::wcslen, std::wcs[n]cmp
-
-#include <odb/core.hxx>
-
-struct date_time
-{
- date_time ()
- {
- }
-
- date_time (short y,
- unsigned short m,
- unsigned short d,
- unsigned short h,
- unsigned short min,
- unsigned short sec,
- unsigned int f,
- short tzh,
- short tzm)
- : year (y),
- month (m),
- day (d),
- hour (h),
- minute (min),
- second (sec),
- fraction (f),
- timezone_hour (tzh),
- timezone_minute (tzm)
- {
- }
-
- bool
- operator== (const date_time& y) const
- {
- return
- year == y.year &&
- month == y.month &&
- day == y.day &&
- hour == y.hour &&
- minute == y.minute &&
- second == y.second &&
- fraction == y.fraction &&
- timezone_hour == y.timezone_hour &&
- timezone_minute == y.timezone_minute;
- }
-
- short year;
- unsigned short month;
- unsigned short day;
- unsigned short hour;
- unsigned short minute;
- unsigned short second;
- unsigned int fraction;
- short timezone_hour;
- short timezone_minute;
-};
-
-#pragma db object
-struct object
-{
- object () {}
- object (unsigned int id): id_ (id) {}
-
- #pragma db id
- unsigned int id_;
-
- // Integer types.
- //
- #pragma db type ("BIT")
- unsigned char bit_;
-
- #pragma db type ("TINYINT")
- unsigned char utint_;
-
- #pragma db type ("TINYINT")
- unsigned char stint_;
-
- #pragma db type ("SMALLINT")
- unsigned short usint_;
-
- #pragma db type ("SMALLINT")
- short ssint_;
-
- #pragma db type ("INT")
- unsigned int uint_;
-
- #pragma db type ("INTEGER")
- int sint_;
-
- #pragma db type ("BIGINT")
- unsigned long long ubint_;
-
- #pragma db type ("BIGINT")
- long long sbint_;
-
- // Floating/fixed point types.
- //
- #pragma db type ("SMALLMONEY")
- float fsm_;
-
- #pragma db type ("SMALLMONEY")
- double dsm_;
-
- #pragma db type ("SMALLMONEY")
- int ism_;
-
- #pragma db type ("MONEY")
- double dm1_;
-
- #pragma db type ("MONEY")
- double dm2_;
-
- #pragma db type ("MONEY")
- long long im_;
-
- #pragma db type ("REAL")
- float f4_;
-
- #pragma db type ("FLOAT")
- double f8_;
-
- // Strings.
- //
- #pragma db type ("CHAR(20)")
- std::string schar_;
-
- #pragma db type ("VARCHAR(128)")
- std::string svchar_;
-
- #pragma db type ("CHAR(1025)")
- std::string lchar_;
-
- #pragma db type ("CHARACTER VARYING(8000)")
- std::string lvchar_;
-
- #pragma db type ("VARCHAR(max)")
- std::string mvchar_;
-
- #pragma db type ("TEXT")
- std::string text_;
-
- // National strings.
- //
- #pragma db type ("NCHAR(20)")
- std::wstring snchar_;
-
- #pragma db type ("NVARCHAR(128)")
- std::wstring snvchar_;
-
- #pragma db type ("NCHAR(513)")
- std::wstring lnchar_;
-
- #pragma db type ("NATIONAL CHARACTER VARYING(4000)")
- std::wstring lnvchar_;
-
- #pragma db type ("NVARCHAR(max)")
- std::wstring mnvchar_;
-
- #pragma db type ("NTEXT")
- std::wstring ntext_;
-
- // Binary.
- //
- #pragma db type ("BINARY(9)")
- unsigned char sbin_[9];
-
- #pragma db type ("VARBINARY(256)")
- std::vector<char> svbin_;
-
- #pragma db type ("BINARY(1025)")
- char lbin_[1025];
-
- #pragma db type ("BINARY VARYING(8000)")
- std::vector<char> lvbin_;
-
- #pragma db type ("VARBINARY(max)")
- std::vector<unsigned char> mvbin_;
-
- #pragma db type ("IMAGE")
- std::vector<char> image_;
-
- // Date-time. SQL Server 2005 (9.0) only has DATETIME and SMALLDATETIME.
- //
-#if !defined(MSSQL_SERVER_VERSION) || MSSQL_SERVER_VERSION >= 1000
- #pragma db type ("DATE")
- date_time date_;
-
- #pragma db type ("TIME")
- date_time time7_;
-
- #pragma db type ("TIME(4)")
- date_time time4_;
-#endif
-
- #pragma db type ("SMALLDATETIME")
- date_time sdt_;
-
- #pragma db type ("DATETIME")
- date_time dt_;
-
-#if !defined(MSSQL_SERVER_VERSION) || MSSQL_SERVER_VERSION >= 1000
- #pragma db type ("DATETIME2")
- date_time dt2_;
-
- #pragma db type ("DATETIMEOFFSET")
- date_time dto7_;
-
- #pragma db type ("DATETIMEOFFSET(0)")
- date_time dto0_;
-#endif
-
- // Other types.
- //
-#if defined(_WIN32) || defined(HOST_WIN32)
- //#pragma db type ("UNIQUEIDENTIFIER")
- GUID guid_;
-#endif
-
- #pragma db type ("UNIQUEIDENTIFIER")
- char uuid_[16];
-
- bool
- operator== (const object& y) const
- {
- return
- id_ == y.id_ &&
- bit_ == y.bit_ &&
- utint_ == y.utint_ &&
- stint_ == y.stint_ &&
- usint_ == y.usint_ &&
- ssint_ == y.ssint_ &&
- uint_ == y.uint_ &&
- sint_ == y.sint_ &&
- ubint_ == y.ubint_ &&
- sbint_ == y.sbint_ &&
- fsm_ == y.fsm_ &&
- dsm_ == y.dsm_ &&
- ism_ == y.ism_ &&
- dm1_ == y.dm1_ &&
- dm2_ == y.dm2_ &&
- im_ == y.im_ &&
- f4_ == y.f4_ &&
- f8_ == y.f8_ &&
-
- schar_ == y.schar_ &&
- svchar_ == y.svchar_ &&
- lchar_ == y.lchar_ &&
- lvchar_ == y.lvchar_ &&
- mvchar_ == y.mvchar_ &&
- text_ == y.text_ &&
-
- snchar_ == y.snchar_ &&
- snvchar_ == y.snvchar_ &&
- lnchar_ == y.lnchar_ &&
- lnvchar_ == y.lnvchar_ &&
- mnvchar_ == y.mnvchar_ &&
- ntext_ == y.ntext_ &&
-
- std::memcmp (sbin_, y.sbin_, sizeof (sbin_)) == 0 &&
- svbin_ == y.svbin_ &&
- std::memcmp (lbin_, y.lbin_, sizeof (lbin_)) == 0 &&
- lvbin_ == y.lvbin_ &&
- mvbin_ == y.mvbin_ &&
- image_ == y.image_
-
-#if !defined(MSSQL_SERVER_VERSION) || MSSQL_SERVER_VERSION >= 1000
- && date_ == y.date_
- && time7_ == y.time7_
- && time4_ == y.time4_
-#endif
- && sdt_ == y.sdt_
- && dt_ == y.dt_
-#if !defined(MSSQL_SERVER_VERSION) || MSSQL_SERVER_VERSION >= 1000
- && dt2_ == y.dt2_
- && dto7_ == y.dto7_
- && dto0_ == y.dto0_
-#endif
-
-#ifdef _WIN32
- && std::memcmp (&guid_, &y.guid_, sizeof (guid_)) == 0
-#endif
- && std::memcmp (uuid_, y.uuid_, sizeof (uuid_)) == 0;
- }
-};
-
-// Test long NULL data.
-//
-#pragma db object
-struct long_null
-{
- long_null () {}
- long_null (unsigned int id): id_ (id) {}
-
- #pragma db id
- unsigned int id_;
-
- #pragma db type ("VARCHAR(max)") null
-#ifdef HAVE_CXX11
- std::unique_ptr<std::string> str_;
-#else
- std::auto_ptr<std::string> str_;
-#endif
-
- bool
- operator== (const long_null& y) const
- {
- return
- id_ == y.id_ &&
- ((str_.get () == 0 && y.str_.get () == 0) || *str_ == *y.str_);
- }
-};
-
-// Test long data in containers, in particular column re-arrangement.
-//
-#pragma db value
-struct long_comp
-{
- long_comp () {}
- long_comp (std::string s, unsigned int n): str (s), num (n) {}
-
- #pragma db type ("VARCHAR(max)")
- std::string str;
-
- unsigned int num;
-
- bool
- operator== (const long_comp& y) const
- {
- return str == y.str && num == y.num;
- }
-};
-
-#pragma db object
-struct long_cont
-{
- long_cont () {}
- long_cont (unsigned int id): id_ (id) {}
-
- #pragma db id
- unsigned int id_;
-
- std::vector<long_comp> v;
-
- bool
- operator== (const long_cont& y) const
- {
- return id_ == y.id_ && v == y.v;
- }
-};
-
-// Test char/wchar_t arrays.
-//
-#pragma db object
-struct char_array
-{
- char_array () {}
- char_array (unsigned long id, const char* s, const wchar_t* ws)
- : id_ (id)
- {
- std::memcpy (s1, s, std::strlen (s) + 1); // VC++ strncpy deprecation.
- std::memcpy (s2, s, std::strlen (s) + 1);
- s3[0] = c1 = *s;
-
- std::memcpy (ws1, ws, (std::wcslen (ws) + 1) * sizeof (wchar_t));
- std::memcpy (ws2, ws, (std::wcslen (ws) + 1) * sizeof (wchar_t));
- ws3[0] = wc1 = *ws;
-
- if (std::strlen (s) == sizeof (s2))
- {
- std::memset (ls1, '1', 1025);
- ls1[1025] = '\0';
- std::memset (ls2, '2', 1025);
-
- for (std::size_t i (0); i < 257; ++i)
- {
- lws1[i] = L'1';
- lws2[i] = L'2';
- }
- lws1[257] = L'\0';
- }
- else
- {
- std::memcpy (ls1, s, std::strlen (s) + 1); // VC++ strcpy deprecation.
- std::memcpy (ls2, s, std::strlen (s) + 1);
-
- std::memcpy (lws1, ws, (std::wcslen (ws) + 1) * sizeof (wchar_t));
- std::memcpy (lws2, ws, (std::wcslen (ws) + 1) * sizeof (wchar_t));
- }
- }
-
- #pragma db id
- unsigned long id_;
-
- //
- //
- char s1[17];
-
- #pragma db type("CHAR(16)")
- char s2[16];
-
- char s3[1];
- char c1;
-
- // Long data.
- //
- char ls1[1026];
-
- #pragma db type("CHAR(1025)")
- char ls2[1025];
-
- //
- //
- wchar_t ws1[17];
-
- #pragma db type("NCHAR(16)")
- wchar_t ws2[16];
-
- wchar_t ws3[1];
- wchar_t wc1;
-
- // Long data.
- //
- wchar_t lws1[258];
-
- #pragma db type("NCHAR(257)")
- wchar_t lws2[257];
-
- bool
- operator== (const char_array& y) const
- {
- return id_ == y.id_ &&
-
- std::strcmp (s1, y.s1) == 0 &&
- std::strncmp (s2, y.s2, sizeof (s2)) == 0 &&
- s3[0] == y.s3[0] &&
- c1 == y.c1 &&
-
- std::strcmp (ls1, y.ls1) == 0 &&
- std::strncmp (ls2, y.ls2, sizeof (ls2)) == 0 &&
-
- std::wcscmp (ws1, y.ws1) == 0 &&
- std::wcsncmp (ws2, y.ws2, sizeof (ws2) / sizeof (wchar_t)) == 0 &&
- ws3[0] == y.ws3[0] &&
- wc1 == y.wc1 &&
-
- std::wcscmp (lws1, y.lws1) == 0 &&
- std::wcsncmp (lws2, y.lws2, sizeof (lws2) / sizeof (wchar_t)) == 0;
- }
-};
-
-// Test optimistic concurrency using ROWVERSION, both with auto and
-// manually-assigned ids.
-//
-#pragma db object optimistic
-struct rowversion
-{
- rowversion (unsigned int id = 0): id_ (id), ver (0) {}
-
- #pragma db id
- unsigned int id_;
-
- #pragma db version type("ROWVERSION")
-#ifdef _WIN32
- unsigned __int64 ver;
-#else
- unsigned long long ver;
-#endif
-
- std::string str;
-};
-
-#pragma db object optimistic
-struct rowversion_auto
-{
- rowversion_auto (): ver (0) {}
-
- #pragma db id auto
- unsigned int id_;
-
- #pragma db version type("ROWVERSION")
-#ifdef _WIN32
- unsigned __int64 ver;
-#else
- unsigned long long ver;
-#endif
-
- std::string str;
-};
-
-#endif // TEST_HXX