[libgda] Added DbRecord<G>.to_string(). Fixes on DbRecordCollection Unit Tests.
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] Added DbRecord<G>.to_string(). Fixes on DbRecordCollection Unit Tests.
- Date: Mon, 9 Jan 2012 18:15:09 +0000 (UTC)
commit 56f8b124ab4b1523440bee457094b29bc5e87126
Author: Daniel Espinosa <despinosa src gnome org>
Date: Sun Jan 8 11:35:15 2012 -0600
Added DbRecord<G>.to_string(). Fixes on DbRecordCollection Unit Tests.
libgda/data/DbRecord.vala | 1 +
libgda/data/GdaData-5.0.gir | 32 ++++++-
tests/vala/CheckDataModelIterator.vala | 161 ++++++++------------------------
3 files changed, 67 insertions(+), 127 deletions(-)
---
diff --git a/libgda/data/DbRecord.vala b/libgda/data/DbRecord.vala
index 88b5970..c8ebafe 100644
--- a/libgda/data/DbRecord.vala
+++ b/libgda/data/DbRecord.vala
@@ -35,5 +35,6 @@ namespace GdaData
public abstract DbField<G> get_field (string name) throws Error;
public abstract void set_key (DbField<G> field) throws Error;
public abstract DbField<G> get_key (string name) throws Error;
+ public abstract string to_string ();
}
}
diff --git a/libgda/data/GdaData-5.0.gir b/libgda/data/GdaData-5.0.gir
index 1bb6255..d39f5d3 100644
--- a/libgda/data/GdaData-5.0.gir
+++ b/libgda/data/GdaData-5.0.gir
@@ -151,11 +151,6 @@
</type>
</type>
</field>
- <method name="to_string" c:identifier="gda_data_record_to_string">
- <return-value transfer-ownership="full">
- <type name="utf8" c:type="gchar*"/>
- </return-value>
- </method>
<constructor name="new" c:identifier="gda_data_record_new">
<return-value transfer-ownership="full">
<type name="GdaData.Record" c:type="GdaDataRecord*"/>
@@ -189,6 +184,11 @@
<type name="GdaData.RecordCollection" c:type="GdaDataRecordCollection*"/>
</return-value>
</constructor>
+ <method name="to_string" c:identifier="gda_data_record_collection_to_string">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </method>
<property name="model">
<type name="Gda.DataModel" c:type="GdaDataModel*"/>
</property>
@@ -533,6 +533,16 @@
</type>
</return-value>
</virtual-method>
+ <method name="to_string" c:identifier="gda_data_db_record_to_string">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </method>
+ <virtual-method name="to_string" invoker="to_string">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </virtual-method>
<property name="table" writable="1" construct="1">
<type name="GdaData.DbTable" c:type="GdaDataDbTable*">
<type name="gpointer" c:type="gpointer"/>
@@ -640,6 +650,18 @@
</return-value>
</callback>
</field>
+ <field name="to_string">
+ <callback name="to_string" c:type="to_string">
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="GdaData.DbRecord" c:type="GdaDataDbRecord*"/>
+ </parameter>
+ </parameters>
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ </callback>
+ </field>
</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"/>
diff --git a/tests/vala/CheckDataModelIterator.vala b/tests/vala/CheckDataModelIterator.vala
index d5651d9..abc4d18 100644
--- a/tests/vala/CheckDataModelIterator.vala
+++ b/tests/vala/CheckDataModelIterator.vala
@@ -50,163 +50,80 @@ namespace Check {
public int t1()
throws Error
{
- stdout.printf (">>> NEW TEST: Gda.DataModelIterable & DataModelIterator API tests\n"
+ stdout.printf (">>> NEW TEST: GdaData.RecordCollection & RecordCollectionIterator API tests\n"
+ ">>> Testing Iterable, Traversable Interfaces\n");
int fails = 0;
var model = this.connection.execute_select_command ("SELECT * FROM user");
- var itermodel = new DataModelIterable (model);
+ var t = new Table<Value?> ();
+ t.connection = this.connection;
+ t.name = "user";
+ var itermodel = new RecordCollection (model, t);
- stdout.printf ("Iterating over all Values in DataModel\n");
- foreach (Value v in itermodel) {
- stdout.printf ("%s\t%s\n", v.type_name (), Gda.value_stringify (v));
+ stdout.printf ("Iterating over all Records in DataModel\n");
+ foreach (DbRecord r in itermodel) {
+ stdout.printf (r.to_string ());
}
- stdout.printf ("Choping to get first Value = 1\n");
+ stdout.printf ("Choping to get first record id= 1\n");
var iter = itermodel.chop (0,0);
iter.next ();
- Value v = iter.get ();
+ var v = iter.get ().get_field ("id").value;
if (v.type () == typeof (int))
- stdout.printf ("ID=%i; Row = %i Col = %i\n", (int) v,
- ((GdaData.DataModelIterator) iter).current_row,
- ((GdaData.DataModelIterator) iter).current_column);
+ stdout.printf ("ID=%i\n", (int) v);
else {
fails++;
stdout.printf ("FAIL:'%i': Expected type = '%s'," +
" but Value is type = '%s'" +
- " with value = %s\n" +
- " : Current Row = %i Col = %i\n",
+ " with value = %s\n",
fails, typeof (int).name (), v.type_name (),
- Gda.value_stringify (v),
- ((GdaData.DataModelIterator) iter).current_row,
- ((GdaData.DataModelIterator) iter).current_column);
+ Gda.value_stringify (v));
}
stdout.printf ("Choping to get 5th Value = 'Jhon'\n");
- var iter2 = itermodel.chop (4,0);
- stdout.printf ("Row = %i Col = %i\n",
- ((GdaData.DataModelIterator) iter2).current_row,
- ((GdaData.DataModelIterator) iter2).current_column);
+ var iter2 = itermodel.chop (1,0);
iter2.next ();
- Value v2 = iter2.get ();
+ var v2 = iter2.get ().get_value ("name");
if (v2.type () == typeof (string))
- stdout.printf ("Name = %s; Row = %i Col = %i\n", (string) v2,
- ((GdaData.DataModelIterator) iter2).current_row,
- ((GdaData.DataModelIterator) iter2).current_column);
+ stdout.printf ("Name = %s;\n", (string) v2);
else {
fails++;
stdout.printf ("FAIL:'%i': Expected type = '%s'," +
" but Value is type = '%s'" +
- " with value = %s" +
- " : Current Row = %i Col = %i\n",
+ " with value = %s\n",
fails, typeof (string).name (), v2.type_name (),
- Gda.value_stringify (v2),
- ((GdaData.DataModelIterator) iter2).current_row,
- ((GdaData.DataModelIterator) iter2).current_column);
+ Gda.value_stringify (v2));
}
-
- stdout.printf ("Choping to get 2nd to 5th Values...\n");
- var iter3 = itermodel.chop (1,4);
- stdout.printf ("TYPE\t\tVALUE\n");
- while (iter3.next ()) {
- Value v3 = iter3.get ();
- stdout.printf ("%s\t\t%s\n", typeof (int).name (), Gda.value_stringify (v3));
- if (((GdaData.DataModelIterator) iter3).current_row == 0
- && ((GdaData.DataModelIterator) iter3).current_column == 1) {
- string name1 = (string) v3;
- if (name1 != "Daniel") {
- fails++;
- break;
- }
- }
- if (((GdaData.DataModelIterator) iter3).current_row == 0
- && ((GdaData.DataModelIterator) iter3).current_column == 2) {
- string name1 = (string) v3;
- if (name1 != "Mexico") {
- fails++;
- break;
- }
- }
- if (((GdaData.DataModelIterator) iter3).current_row == 1
- && ((GdaData.DataModelIterator) iter3).current_column == 0) {
- int id1 = (int) v3;
- if (id1 != 2) {
- fails++;
- break;
- }
- }
- if (((GdaData.DataModelIterator) iter3).current_row == 1
- && ((GdaData.DataModelIterator) iter3).current_column == 1) {
- string name1 = (string) v3;
- if (name1 != "Jhon") {
- fails++;
- break;
- }
- }
- }
-
- stdout.printf ("Filtering Values: Any STRING with a letter 'n'...\n");
- Gee.Predicate <Value?> f = (g) => {
- bool ret = false;
- if (g.type () == typeof (string)) {
- string t = (string) g;
- if (t.contains ("n"))
- ret = true;
- else
- ret = false;
- }
- else
- ret = false;
- stdout.printf ("To be Included?: %s, %s\n",
- Gda.value_stringify (g), ret == true ? "TRUE" : "FALSE");
- return ret;
- };
-
- var iter4 = itermodel.filter (f);
- stdout.printf ("Printing Filtered Values...\n");
- while (iter4.next ()) {
- Value v4 = iter4.get ();
- stdout.printf ("Row: %i, Col: %i\t%s\t\t%s\n",
- ((GdaData.DataModelIterator) iter4).current_row,
- ((GdaData.DataModelIterator) iter4).current_column,
- typeof (int).name (), Gda.value_stringify (v4));
- }
-
- /* FIXME: This code doesn't return YIELDED strings maybe becasue Lazy is not correctly build.
- In theory stream() function is working correctly*/
- stdout.printf ("Streaming Values: Any STRING will be YIELDED...\n");
- Gee.StreamFunc<Value?,string> s = (state, g, lazy) => {
- if (state == Gee.Traversable.Stream.CONTINUE) {
- Value vs = g.get ();
- stdout.printf ("Value to YIELD: %s\n", Gda.value_stringify (vs));
- string ts = "YIELDED Value = " + Gda.value_stringify (vs) + "\n";
- lazy = new Gee.Lazy<string>.from_value (ts.dup ());
- stdout.printf (ts);
- return Gee.Traversable.Stream.YIELD;
- }
- return Gee.Traversable.Stream.END;
- };
-
- var iter5 = itermodel.stream<string> (s);
- stdout.printf ("Printing Streamed Values...\n");
- while (iter5.next ()) {
- string sv = iter5.get ();
- stdout.printf ("%s\n", sv);
- }
-
+ // FIXME: test filter and stream
return fails;
}
public int t2 ()
{
- stdout.printf (">>> NEW TEST: Gda.DataModelIterable & DataModelIterator API tests\n"
+ stdout.printf (">>> NEW TEST: GdaData.RecordCollection & RecordCollectionIterator API tests\n"
+ ">>> Testing Collection Interface\n");
int fails = 0;
var model = this.connection.execute_select_command ("SELECT * FROM user");
((DataSelect) model).compute_modification_statements ();
var pxy = (Gda.DataModel) Gda.DataProxy.new (model);
-
- var itermodel = new DataModelIterable (pxy);
- if ( !itermodel.add (1))
+ var t = new Table<Value?>();
+ t.connection = this.connection;
+ t.name = "user";
+ var itermodel = new RecordCollection (pxy,t);
+ var row = new Record ();
+ row.table = t;
+ var f = new Field<Value?>("id", DbField.Attribute.NONE);
+ f.value = 10;
+ row.set_field (f);
+ f.name = "name";
+ f.value = "Samanta";
+ row.set_field (f);
+ f.name = "city";
+ f.value = "San Francisco";
+ row.set_field (f);
+ if ( itermodel.add (row)) {
+ stdout.printf("New contents in DataModel:\n" + itermodel.to_string ());
+ }
+ else
fails++;
return fails;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]