[libgda] Fixes on Gee Collections implementation and DbRecord Unit Test.
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] Fixes on Gee Collections implementation and DbRecord Unit Test.
- Date: Mon, 9 Jan 2012 18:15:14 +0000 (UTC)
commit 60edd14b245a025b87b37452860eba90392df110
Author: Daniel Espinosa <despinosa src gnome org>
Date: Mon Jan 9 12:08:59 2012 -0600
Fixes on Gee Collections implementation and DbRecord Unit Test.
* API changed to DbObject and updates to dependant interfaces and classes
* API changes to other interterfaces and updates to implementators
* Updates to GIR/VAPI files for GdaData
* Fixed DbRecord and Record to pass Unit Tests
libgda/data/DataBase.vala | 2 +-
libgda/data/DbField.vala | 2 +-
libgda/data/DbObject.vala | 2 +-
libgda/data/DbSchema.vala | 2 +-
libgda/data/DbTable.vala | 4 +-
libgda/data/Field.vala | 8 +--
libgda/data/GdaData-5.0.gir | 29 ++++++--
libgda/data/Record.vala | 55 ++++++++++------
libgda/data/Schema.vala | 2 +-
libgda/data/Table.vala | 20 +++---
tests/vala/CheckDataModelIterator.vala | 7 ++-
tests/vala/CheckDataObject.vala | 118 +++++++++++++++++++++-----------
12 files changed, 158 insertions(+), 93 deletions(-)
---
diff --git a/libgda/data/DataBase.vala b/libgda/data/DataBase.vala
index 27087ab..09ba030 100644
--- a/libgda/data/DataBase.vala
+++ b/libgda/data/DataBase.vala
@@ -41,7 +41,7 @@ namespace GdaData
}
}
public void save () throws Error {}
- public bool append () throws Error { return false; }
+ public void append () throws Error {}
// DbNamedObject
public string name { get; set; }
// DbCollection Interface
diff --git a/libgda/data/DbField.vala b/libgda/data/DbField.vala
index be9dbc7..b5a2171 100644
--- a/libgda/data/DbField.vala
+++ b/libgda/data/DbField.vala
@@ -22,7 +22,7 @@ using Gda;
namespace GdaData
{
- public interface DbField<G> : Object, DbObject
+ public interface DbField<G> : Object
{
public abstract G @value { get; set; }
public abstract string name { get; set; }
diff --git a/libgda/data/DbObject.vala b/libgda/data/DbObject.vala
index a9633f2..2ecd75b 100644
--- a/libgda/data/DbObject.vala
+++ b/libgda/data/DbObject.vala
@@ -23,7 +23,7 @@ using Gda;
namespace GdaData {
public interface DbObject : Object {
public abstract Connection connection { get; set; }
- public abstract bool append () throws Error;
+ public abstract void append () throws Error;
public abstract void update () throws Error;
public abstract void save () throws Error;
}
diff --git a/libgda/data/DbSchema.vala b/libgda/data/DbSchema.vala
index 329ecb0..49d10b6 100644
--- a/libgda/data/DbSchema.vala
+++ b/libgda/data/DbSchema.vala
@@ -22,7 +22,7 @@ using Gda;
namespace GdaData
{
- public interface DbSchema<G> : DbNamedObject
+ public interface DbSchema<G> : DbObject, DbNamedObject
{
public abstract Collection<DbTable<G>> tables { owned get; }
}
diff --git a/libgda/data/DbTable.vala b/libgda/data/DbTable.vala
index 2478960..5db47e8 100644
--- a/libgda/data/DbTable.vala
+++ b/libgda/data/DbTable.vala
@@ -22,12 +22,12 @@ using Gda;
namespace GdaData
{
- public interface DbTable<G> : DbNamedObject
+ public interface DbTable<G> : DbObject, DbNamedObject
{
public abstract DbSchema schema { get; set construct; }
public abstract Collection<DbRecord<G>> records { owned get; }
public abstract Collection<DbTable<G>> fk_depends { owned get; }
public abstract Collection<DbTable<G>> fk { owned get; }
- public abstract Collection<DbFieldInfo<G>> fields { owned get; set construct; }
+ public abstract Collection<DbFieldInfo<G>> fields { owned get; }
}
}
diff --git a/libgda/data/Field.vala b/libgda/data/Field.vala
index 6f8115c..b0ad5f8 100644
--- a/libgda/data/Field.vala
+++ b/libgda/data/Field.vala
@@ -22,18 +22,12 @@ using Gda;
namespace GdaData
{
- public class Field<G> : Object, DbField<G>, DbObject
+ public class Field<G> : Object, DbField<G>
{
private G val;
private string _name;
private string _column_name;
private DbField.Attribute _attributes;
-
- // DbObject Interface
- public Connection connection { get; set; }
- public bool append () throws Error { return false; }
- public void update () throws Error {}
- public void save () throws Error {}
// DbField Interface
public G @value {
get { return val; }
diff --git a/libgda/data/GdaData-5.0.gir b/libgda/data/GdaData-5.0.gir
index d39f5d3..12842a0 100644
--- a/libgda/data/GdaData-5.0.gir
+++ b/libgda/data/GdaData-5.0.gir
@@ -113,6 +113,21 @@
</type>
</type>
</field>
+ <constructor name="with_fields_info" c:identifier="gda_data_table_new_with_fields_info">
+ <parameters>
+ <parameter name="fields" transfer-ownership="none">
+ <type name="Gee.HashMap" c:type="GeeHashMap*">
+ <type name="utf8" c:type="gchar*"/>
+ <type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*">
+ <type name="gpointer" c:type="gpointer"/>
+ </type>
+ </type>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="GdaData.Table" c:type="GdaDataTable*"/>
+ </return-value>
+ </constructor>
<constructor name="new" c:identifier="gda_data_table_new">
<return-value transfer-ownership="full">
<type name="GdaData.Table" c:type="GdaDataTable*"/>
@@ -127,8 +142,8 @@
<record name="TablePrivate" c:type="GdaDataTablePrivate" disguised="1"/>
<class name="Record" c:type="GdaDataRecord" glib:type-name="GdaDataRecord" glib:get-type="gda_data_record_get_type" glib:type-struct="RecordClass" parent="GObject.Object">
<implements name="GdaData.DbObject"/>
- <implements name="GdaData.DbRecord"/>
<implements name="Gee.Comparable"/>
+ <implements name="GdaData.DbRecord"/>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
</field>
@@ -230,7 +245,6 @@
<record name="RecordCollectionIteratorPrivate" c:type="GdaDataRecordCollectionIteratorPrivate" disguised="1"/>
<class name="Field" c:type="GdaDataField" glib:type-name="GdaDataField" glib:get-type="gda_data_field_get_type" glib:type-struct="FieldClass" parent="GObject.Object">
<implements name="GdaData.DbField"/>
- <implements name="GdaData.DbObject"/>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
</field>
@@ -276,12 +290,12 @@
<prerequisite name="GObject.Object"/>
<method name="append" c:identifier="gda_data_db_object_append" throws="1">
<return-value transfer-ownership="full">
- <type name="gboolean" c:type="gboolean"/>
+ <type name="none"/>
</return-value>
</method>
<virtual-method name="append" invoker="append" throws="1">
<return-value transfer-ownership="full">
- <type name="gboolean" c:type="gboolean"/>
+ <type name="none"/>
</return-value>
</virtual-method>
<method name="update" c:identifier="gda_data_db_object_update" throws="1">
@@ -320,7 +334,7 @@
</parameter>
</parameters>
<return-value transfer-ownership="full">
- <type name="gboolean" c:type="gboolean"/>
+ <type name="none"/>
</return-value>
</callback>
</field>
@@ -376,6 +390,7 @@
</field>
</record>
<interface name="DbTable" c:type="GdaDataDbTable" glib:type-name="GdaDataDbTable" glib:get-type="gda_data_db_table_get_type" glib:type-struct="DbTableIface">
+ <prerequisite name="GdaData.DbObject"/>
<prerequisite name="GdaData.DbNamedObject"/>
<property name="schema" writable="1" construct="1">
<type name="GdaData.DbSchema" c:type="GdaDataDbSchema*"/>
@@ -401,7 +416,7 @@
</type>
</type>
</property>
- <property name="fields" writable="1" construct="1">
+ <property name="fields">
<type name="Gee.Collection" c:type="GeeCollection*">
<type name="GdaData.DbFieldInfo" c:type="GdaDataDbFieldInfo*">
<type name="gpointer" c:type="gpointer"/>
@@ -665,7 +680,6 @@
</record>
<interface name="DbField" c:type="GdaDataDbField" glib:type-name="GdaDataDbField" glib:get-type="gda_data_db_field_get_type" glib:type-struct="DbFieldIface">
<prerequisite name="GObject.Object"/>
- <prerequisite name="GdaData.DbObject"/>
<method name="to_string" c:identifier="gda_data_db_field_to_string">
<return-value transfer-ownership="full">
<type name="utf8" c:type="gchar*"/>
@@ -737,6 +751,7 @@
</field>
</record>
<interface name="DbSchema" c:type="GdaDataDbSchema" glib:type-name="GdaDataDbSchema" glib:get-type="gda_data_db_schema_get_type" glib:type-struct="DbSchemaIface">
+ <prerequisite name="GdaData.DbObject"/>
<prerequisite name="GdaData.DbNamedObject"/>
<property name="tables">
<type name="Gee.Collection" c:type="GeeCollection*">
diff --git a/libgda/data/Record.vala b/libgda/data/Record.vala
index 5133e16..bffbc84 100644
--- a/libgda/data/Record.vala
+++ b/libgda/data/Record.vala
@@ -22,7 +22,7 @@ using Gee;
namespace GdaData {
- public class Record : Object, DbObject, DbRecord<Value?>, Comparable<DbRecord>
+ public class Record : Object, DbObject, Comparable<DbRecord<Value?>>, DbRecord<Value?>
{
protected HashMap<string,DbField<Value?>> _fields = new HashMap<string,DbField<Value?>> ();
protected HashMap<string,DbField<Value?>> _keys = new HashMap<string,DbField<Value?>> ();
@@ -61,7 +61,6 @@ namespace GdaData {
else {
// FIXME: Get default attributes from table
var n = new Field<Value?> (field.name, DbField.Attribute.NONE);
- n.connection = connection;
n.value = field.value;
this._fields.set (field.name, n);
}
@@ -95,17 +94,21 @@ namespace GdaData {
*/
public void save () throws Error
{
- var q = new SqlBuilder (SqlStatementType.UPDATE);
+ if (fields.size <= 0)
+ throw new DbObjectError.SAVE ("No fields has been set");
+ if (keys.size <= 0)
+ throw new DbObjectError.SAVE ("No Keys has been set");
+ var q = new SqlBuilder (SqlStatementType.UPDATE);
q.set_table (table.name);
foreach (DbField<Value?> f in fields) {
q.add_field_value_as_gvalue (f.column_name, f.value);
}
SqlBuilderId cond = -1;
- foreach (DbField<Value?> f in fields) {
+ foreach (DbField<Value?> f in keys) {
var f_id = q.add_id (f.name);
var e_id = q.add_expr_value (null, f.value);
var c_id = q.add_cond (SqlOperatorType.EQ, f_id, e_id, 0);
- if (cond < 0)
+ if (cond == -1)
cond = c_id;
else
cond = q.add_cond (SqlOperatorType.AND, cond, c_id, 0);
@@ -117,7 +120,7 @@ namespace GdaData {
// + "\n");
var i = this.connection.statement_execute_non_select (q.get_statement (), null, null);
if (i != 1) {
- throw new DbObjectError.APPEND ("Have been saved more or less rows than expected");
+ throw new DbObjectError.SAVE ("Have been saved more or less rows than expected");
}
}
/**
@@ -125,36 +128,49 @@ namespace GdaData {
*/
public void update () throws Error
{
- var q = new SqlBuilder (SqlStatementType.SELECT);
+ if (keys.size <= 0)
+ throw new DbObjectError.UPDATE ("No Keys has been set");
+ var q = new SqlBuilder (SqlStatementType.SELECT);
q.select_add_target (table.name, null);
- SqlBuilderId cond = -1;
- foreach (DbField<Value?> f in fields) {
+ q.select_add_field ("*", null, null);
+ SqlBuilderId cond = -1;
+ foreach (DbField<Value?> f in keys) {
var f_id = q.add_id (f.name);
var e_id = q.add_expr_value (null, f.value);
var c_id = q.add_cond (SqlOperatorType.EQ, f_id, e_id, 0);
- if (cond < 0)
+ if (cond == -1) {
cond = c_id;
- else
+ }
+ else {
cond = q.add_cond (SqlOperatorType.AND, cond, c_id, 0);
+ }
}
q.set_where (cond);
- q.select_add_field ("*", null, null);
-// stdout.printf ("DEBUG: UPDATE statement to execute: \n"+
+// stdout.printf ("DEBUG: SELECT statement to execute: \n"+
// (q.get_statement()).to_sql_extended (this.connection, null,
// StatementSqlFlag.PRETTY, null)
// + "\n");
- var i = this.connection.statement_execute_non_select (q.get_statement (), null, null);
- if (i != 1) {
- throw new DbObjectError.UPDATE ("Have been updated more or less rows than expected");
+ var m = this.connection.statement_execute_select (q.get_statement (), null);
+ if (m.get_n_rows () != 1) {
+ throw new DbObjectError.UPDATE ("Returning number of rows are more than 1");
+ }
+
+ for (int c = 0; c < m.get_n_columns (); c++) {
+ var f = new Field<Value?> (m.get_column_name (c),
+ (DbField.Attribute) m.get_attributes_at (c, 0));
+ f.value = m.get_value_at (c,0);
+ this.set_field (f);
}
}
/**
* Append a new row to the defined table and returns its ID. If defaults is set to true,
* default value for each field is set.
*/
- public bool append () throws Error
+ public void append () throws Error
{
- var sql = new SqlBuilder (SqlStatementType.INSERT);
+ if (fields.size <= 0)
+ throw new DbObjectError.APPEND ("No fields has been set");
+ var sql = new SqlBuilder (SqlStatementType.INSERT);
sql.set_table (table.name);
// FIXME: MetaData is required
foreach (DbField<Value?> f in _fields.values) {
@@ -166,9 +182,8 @@ namespace GdaData {
// + "\n");
var i = this.connection.statement_execute_non_select (sql.get_statement (), null, null);
if (i != 1) {
- throw new DbObjectError.UPDATE ("Have been added more or less rows than expected");
+ throw new DbObjectError.UPDATE ("Have been updated more or less rows than expected");
}
- return true;
}
//
public string to_string ()
diff --git a/libgda/data/Schema.vala b/libgda/data/Schema.vala
index b0f5c45..a0bbcb3 100644
--- a/libgda/data/Schema.vala
+++ b/libgda/data/Schema.vala
@@ -45,7 +45,7 @@ namespace GdaData
}
}
public void save () throws Error {}
- public bool append () throws Error { return false; }
+ public void append () throws Error {}
// DbNamedObject Interface
public string name { get; set; }
// DbSchema Interface
diff --git a/libgda/data/Table.vala b/libgda/data/Table.vala
index cfcf530..4269c88 100644
--- a/libgda/data/Table.vala
+++ b/libgda/data/Table.vala
@@ -28,25 +28,27 @@ namespace GdaData
protected HashMap<string,DbFieldInfo<G>> _fields = new HashMap<string,DbFieldInfo<G>> ();
protected HashMap<string,DbTable<G>> _fk_depends = new HashMap<string,DbTable<G>> ();
protected HashMap<string,DbTable<G>> _fk = new HashMap<string,DbTable<G>> ();
+
+ public Table.with_fields_info (HashMap<string,DbFieldInfo<G>> fields)
+ {
+ foreach (DbFieldInfo<G> f in fields.values) {
+ _fields.set (f.name, f);
+ }
+ }
// DbObject Interface
public Connection connection { get; set; }
public void update () throws Error {}
public void save () throws Error {}
- public bool append () throws Error { return false; }
+ public void append () throws Error {}
// DbNamedObject Interface
public string name { get; set; }
// DbTable Interface
public Collection<DbFieldInfo<G>> fields {
owned get { return _fields.values; }
- set construct {
- foreach (DbFieldInfo<G> f in value) {
- _fields.set (f.name, f);
- }
- }
}
public DbSchema schema { get; set construct; }
- public Collection<DbRecord> records {
+ public Collection<DbRecord<G>> records {
owned get {
var q = new Gda.SqlBuilder (SqlStatementType.SELECT);
q.set_table (name);
@@ -57,7 +59,7 @@ namespace GdaData
return _records;
}
}
- public Collection<DbTable> fk_depends { owned get { return _fk_depends.values; } }
- public Collection<DbTable> fk { owned get { return _fk.values; } }
+ public Collection<DbTable<G>> fk_depends { owned get { return _fk_depends.values; } }
+ public Collection<DbTable<G>> fk { owned get { return _fk.values; } }
}
}
diff --git a/tests/vala/CheckDataModelIterator.vala b/tests/vala/CheckDataModelIterator.vala
index abc4d18..d123a93 100644
--- a/tests/vala/CheckDataModelIterator.vala
+++ b/tests/vala/CheckDataModelIterator.vala
@@ -58,9 +58,12 @@ namespace Check {
t.connection = this.connection;
t.name = "user";
var itermodel = new RecordCollection (model, t);
-
+ var iter = itermodel.iterator ();
+ var iter.next ();
+ var r = iter.get ();
+ stdout.printf ("First Record contents: \n" + r.to_string ());
stdout.printf ("Iterating over all Records in DataModel\n");
- foreach (DbRecord r in itermodel) {
+ foreach (DbRecord<Value?> r in itermodel) {
stdout.printf (r.to_string ());
}
diff --git a/tests/vala/CheckDataObject.vala b/tests/vala/CheckDataObject.vala
index 77b170a..e989cac 100644
--- a/tests/vala/CheckDataObject.vala
+++ b/tests/vala/CheckDataObject.vala
@@ -19,6 +19,7 @@
using Gda;
using GdaData;
+using Gee;
namespace Check {
class Record : GdaData.Record
@@ -54,85 +55,113 @@ namespace Check {
public int t1()
throws Error
{
- stdout.printf(">>> NEW TEST: Gda.DataObject API tests\n");
+ stdout.printf(">>> NEW TEST: GdaData.DbRecord API tests\n");
int fails = 0;
+ stdout.printf("Creating new record\n");
var r = new Check.Record ();
+ stdout.printf("Setting connection\n");
r.connection = this.connection;
+ stdout.printf("Setting up DbTable\n");
var t = new Table<Value?> ();
+ stdout.printf("Setting DbTable name\n");
t.name = "user";
+ stdout.printf("Setting DbTable connection\n");
t.connection = this.connection;
+ stdout.printf(">>> Setting table to record\n");
r.table = t;
+ stdout.printf(">>> Setting up Key 'id'\n");
var k = new Field<Value?>("id", DbField.Attribute.NONE);
- k.connection = this.connection;
- stdout.printf("Setting ID to 1\n");
+ stdout.printf("Setting record ID to 1...");
try {
k.value = 1;
r.set_key (k);
+ foreach (DbField<Value?> kv in r.keys) {
+ stdout.printf ("KEY: " + kv.name + " VALUE: " + Gda.value_stringify(kv.value) + "\n");
+ }
r.update ();
+ foreach (DbField<Value?> kv in r.fields) {
+ stdout.printf ("FIELD: " + kv.name + " VALUE: " + Gda.value_stringify(kv.value) + "\n");
+ }
+ stdout.printf("PASS\n");
}
catch (Error e) {
fails++;
- stdout.printf ("Couln't set ID...\nFAILS: %i\nERROR: %s\n", fails, e.message);
+ stdout.printf ("FAIL: %i\nCouln't set ID...ERROR: %s\n", fails, e.message);
}
- stdout.printf("DataObject points to, in table "+ r.table.name + ":\n", r.table);
+ stdout.printf("DbRecord points to, in table "+ r.table.name + ":\n", r.table);
stdout.printf("%s\n", r.to_string());
- stdout.printf("Getting ID value...\n");
+ stdout.printf("Getting ID value...");
var i = (int) (r.get_key ("id")).value;
if (i != 1 ){
fails++;
- stdout.printf("FAILS: %i\n", fails);
+ stdout.printf("FAIL: %i\n", fails);
}
+ else
+ stdout.printf("PASS\n");
- stdout.printf("Getting value at 'name'...\n");
+ stdout.printf("Getting value at 'name'...");
var vdb = (string) (r.get_field ("name")).value;
if (vdb == null ){
fails++;
- stdout.printf("FAILS: %i\n", fails);
+ stdout.printf("FAIL: %i\n", fails);
}
- else
+ else
if ( vdb != "Daniel"){
fails++;
- stdout.printf("FAILS: %i\n", fails);
+ stdout.printf("FAIL: %i\nERROR: Value not match. Expected 'Daniel' but value is %s:\n",
+ fails, vdb);
}
+ else
+ stdout.printf("PASS\n");
- stdout.printf("Setting value at 'name'...\n");
- var f = r.get_field ("name");
- f.name = "Daniel Espinosa";
- r.set_field (f);
- stdout.printf("DataObject points to in memory modified value, in table '%s':\n", r.table.name);
- stdout.printf("%s\n", r.to_string());
-
- stdout.printf("Saving changes...\n");
+ stdout.printf("Setting value at 'name'...");
+ try {
+ var f = r.get_field ("name");
+ f.value = "Daniel Espinosa";
+ r.set_field (f);
+ stdout.printf("DataObject points to in memory modified value, in table '%s':\n", r.table.name);
+ stdout.printf("%s\n", r.to_string());
+ stdout.printf("PASS\n");
+ }
+ catch (Error e) {
+ fails++;
+ stdout.printf ("FAIL: %i\nCouln't modify record...ERROR: %s\n", fails, e.message);
+ }
+ stdout.printf("Saving changes...");
try {
r.save();
stdout.printf("DataObject points to modified value, in table '%s':\n", r.table.name);
stdout.printf("%s\n", r.to_string());
+ stdout.printf("PASS\n");
}
catch (Error e) {
fails++;
- stdout.printf ("Couln't SAVE...\nFAILS: %i\nERROR: %s\n", fails, e.message);
+ stdout.printf ("FAIL: %i\nCouln't SAVE...ERROR: %s\n", fails, e.message);
}
try {
- stdout.printf ("Simulating external database update\n");
+ stdout.printf ("Simulating external database update...");
this.connection.execute_non_select_command("UPDATE user SET name = \"Jhon Strauss\", city =\"New Jersey\"");
+ stdout.printf("PASS\n");
}
catch (Error e) {
fails++;
- stdout.printf ("Couln't manual update table '%s'...\nFAILS: %i\nERROR: %s\n", r.table.name, fails, e.message);
+ stdout.printf ("FAIL: %i\nCouln't manual update table '%s'...ERROR: %s\n",
+ fails, r.table.name, e.message);
}
- stdout.printf("Updating values from database...\n");
+ stdout.printf("Updating values from database...");
try {
r.update();
stdout.printf("DataObject points to actual stored values, in table '%s':\n", r.table.name);
stdout.printf("%s\n", r.to_string());
+
}
catch (Error e) {
fails++;
- stdout.printf ("Couln't UPDATE...\nFAILS: %i\nERROR: %s\n", fails, e.message);
+ stdout.printf ("FAIL: %i\nCouln't UPDATE...ERROR: %s\n", fails, e.message);
}
stdout.printf("Setting a new Table... \n");
@@ -140,27 +169,29 @@ namespace Check {
t2.name = "company";
t2.connection = this.connection;
r.table = t2;
- stdout.printf("Updating values from database using a new table 'company'...\n");
+ stdout.printf("Updating values from database using a new table '" + r.table.name + "'...");
try {
r.update();
stdout.printf("DataObject points to actual stored values, in table '%s':\n", r.table.name);
stdout.printf("%s\n", r.to_string());
+ stdout.printf("PASS\n");
}
catch (Error e) {
fails++;
- stdout.printf ("Couln't UPDATE...\nFAILS: %i\nERROR: %s\n", fails, e.message);
+ stdout.printf ("FAIL: %i\nCouln't UPDATE...ERROR: %s\n", fails, e.message);
}
- stdout.printf("Setting ID to 2\n");
+ stdout.printf("Setting ID to 2...");
try {
k.value = 2;
r.set_key (k);
stdout.printf("DataObject points to actual stored values, in table '%s':\n", r.table.name);
stdout.printf("%s\n", r.to_string());
+ stdout.printf("PASS\n");
}
catch (Error e) {
fails++;
- stdout.printf ("Couln't set ID...\nFAILS: %i\nERROR: %s\n", fails, e.message);
+ stdout.printf ("FAIL: %i\nCouln't set ID...ERROR: %s\n", fails, e.message);
}
r.t = "user"; // Reset to default
return fails;
@@ -169,36 +200,41 @@ namespace Check {
public int t2()
throws Error
{
- stdout.printf(">>> NEW TEST: Gda.DataObject Adding new objects to DB\n");
+ stdout.printf(">>> NEW TEST: Gda.DbRecord - Adding new objects to DB...\n");
int fails = 0;
try {
var n = new Check.Record ();
n.connection = this.connection;
- var f = new Field<Value?>("id", DbField.Attribute.NONE);
- f.connection = this.connection;
- f.value = 3;
- n.set_field (f);
- f.name = "name";
- f.value = "GdaDataNewName";
- n.set_field (f);
- f.name = "city";
- f.value = "GdaDataNewCity";
- stdout.printf("DataObject points to actual stored values, in table '%s':\n", n.table.name);
+ var t = new Table<Value?> ();
+ t.name = "user";
+ t.connection = this.connection;
+ n.table = t;
+ var f = new HashMap<string,Value?> ();
+ f.set ("id", 3);
+ f.set ("name", "GdaDataNewName");
+ f.set ("city","GdaDataNewCity");
+ foreach (string k in f.keys) {
+ var field = new Field<Value?>(k, DbField.Attribute.NONE);
+ field.value = f.get (k);
+ n.set_field (field);
+ }
+ stdout.printf("DbRecord in memory values, to added to table '%s':\n", n.table.name);
stdout.printf("%s\n", n.to_string());
n.append ();
var m = n.connection.execute_select_command ("SELECT * FROM user");
if (m.get_n_rows () != 3) fails++;
stdout.printf ("All records:\n" + m.dump_as_string () + "\n");
+ stdout.printf("PASS\n");
}
catch (Error e) {
fails++;
- stdout.printf ("Couln't set ID...\nFAILS: %i\nERROR: %s\n", fails, e.message);
+ stdout.printf ("FAIL: %i\nCouln't set add new record...-ERROR: %s\n", fails, e.message);
}
return fails;
}
public static int main (string[] args) {
- stdout.printf ("Checking Gda.DataObject implementation...\n");
+ stdout.printf ("Checking GdaData.DbRecord implementation...\n");
int failures = 0;
var app = new Tests ();
try {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]