context: // created on 27/12/2002 at 17:05
  // 
  // Author:
  // 	Francisco Figueiredo Jr. <fxjrlists@yahoo.com>
  //
  //	Copyright (C) 2002 The Npgsql Development Team
  //	npgsql-general@gborg.postgresql.org
  //	http://gborg.postgresql.org/project/npgsql/projdisplay.php
  //
  // This library is free software; you can redistribute it and/or
  // modify it under the terms of the GNU Lesser General Public
  // License as published by the Free Software Foundation; either
  // version 2.1 of the License, or (at your option) any later version.
  // 
  // This library is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  // Lesser General Public License for more details.
  // 
  // You should have received a copy of the GNU Lesser General Public
  // License along with this library; if not, write to the Free Software
  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  
  using System;
  using System.Data;
  using System.Web.UI.WebControls;
  using Npgsql;
  
  using NUnit.Framework;
  using NUnit.Core;
  
  namespace NpgsqlTests
  {
  	
  	[TestFixture]
  	public class DataReaderTests
  	{
  		
  		NpgsqlConnection _conn;
  		
  		[SetUp]
  		protected void SetUp()
  		{
  			//NpgsqlEventLog.Level = LogLevel.None;
  			//NpgsqlEventLog.Level = LogLevel.Debug;
  			//NpgsqlEventLog.LogName = "NpgsqlTests.LogFile";
  			_conn = new NpgsqlConnection (TestConfiguration.NpgsqlConnectionString);
  		}
  		
  		[TearDown]
  		protected void TearDown()
  		{
  			if (_conn != null &&_conn.State != ConnectionState.Closed)
  				_conn.Close();
  		}
  		
  		[Test]
  		public void GetBoolean()
  		{
  			_conn.Open();
  			
  			NpgsqlCommand command = new NpgsqlCommand("select * from tablea where field_serial = 4;", _conn);
  			
  			NpgsqlDataReader dr = command.ExecuteReader();
  			
  			dr.Read();
  			Boolean result = dr.GetBoolean(4);
  			Assert.AreEqual(true, result);
  			
  		}
  		
  		
  		[Test]
  		public void GetChars()
  		{
  			_conn.Open();
  			NpgsqlCommand command = new NpgsqlCommand("select * from tablea where field_serial = 1;", _conn);
  			
  			NpgsqlDataReader dr = command.ExecuteReader();
  			
  			dr.Read();
  			Char[] result = new Char[6];
  			
  			
  			Int64 a = dr.GetChars(1, 0, result, 0, 6);
  			
  			Assert.AreEqual("Random", new String(result));
  			/*ConsoleWriter cw = new ConsoleWriter(Console.Out);
  			
  			cw.WriteLine(result);*/
  			
  			
  		}
  		
  		[Test]
  		public void GetInt32()
  		{
  			_conn.Open();
  			NpgsqlCommand command = new NpgsqlCommand("select * from tablea where field_serial = 2;", _conn);
  			
  			NpgsqlDataReader dr = command.ExecuteReader();
  			
  			dr.Read();
  			
  			
  			Int32 result = dr.GetInt32(2);
  			
  			//ConsoleWriter cw = new ConsoleWriter(Console.Out);
  			
  			//cw.WriteLine(result.GetType().Name);
  			Assert.AreEqual(4, result);
  			
  		}
  		
  		
  		[Test]
  		public void GetInt16()
  		{
  			_conn.Open();
  			NpgsqlCommand command = new NpgsqlCommand("select * from tableb where field_serial = 1;", _conn);
  			
  			NpgsqlDataReader dr = command.ExecuteReader();
  			
  			dr.Read();
  			
  			Int16 result = dr.GetInt16(1);
  			
  			Assert.AreEqual(2, result);
  			
  		}
  		
  		
  		[Test]
  		public void GetDecimal()
  		{
  			_conn.Open();
  			NpgsqlCommand command = new NpgsqlCommand("select * from tableb where field_serial = 3;", _conn);
  			
  			NpgsqlDataReader dr = command.ExecuteReader();
  			
  			dr.Read();
  			
  			Decimal result = dr.GetDecimal(3);
  			
  						
  			Assert.AreEqual(4.2300000M, result);
  			
  		}
  	
  	
  		
  		
  		[Test]
  		public void GetDouble()
  		{
  			_conn.Open();
  			NpgsqlCommand command = new NpgsqlCommand("select * from tabled where field_serial = 2;", _conn);
  			
  			NpgsqlDataReader dr = command.ExecuteReader();
  			
  			dr.Read();
  			
  			//Double result = Double.Parse(dr.GetInt32(2).ToString());
  		  Double result = dr.GetDouble(2);
  			
  			Assert.AreEqual(.123456789012345D, result);
  			
  		}
  		
  		
  		[Test]
  		public void GetFloat()
  		{
  			_conn.Open();
  			NpgsqlCommand command = new NpgsqlCommand("select * from tabled where field_serial = 1;", _conn);
  			
  			NpgsqlDataReader dr = command.ExecuteReader();
  			
  			dr.Read();
  			
  			//Single result = Single.Parse(dr.GetInt32(2).ToString());
  		  Single result = dr.GetFloat(1);
  			
  			Assert.AreEqual(.123456F, result);
  			
  		}
  		
  		
  		[Test]
  		public void GetString()
  		{
  			_conn.Open();
  			NpgsqlCommand command = new NpgsqlCommand("select * from tablea where field_serial = 1;", _conn);
  			
  			NpgsqlDataReader dr = command.ExecuteReader();
  			
  			dr.Read();
  			
  			String result = dr.GetString(1);
  			
  			Assert.AreEqual("Random text", result);
  			
  		}
  		
  		
  		[Test]
  		public void GetStringWithParameter()
  		{
  			_conn.Open();
  			NpgsqlCommand command = new NpgsqlCommand("select * from tablea where field_text = :value;", _conn);
  			
  			String test = "Random text";
  			NpgsqlParameter param = new NpgsqlParameter();
  			param.ParameterName = "value";
  			param.DbType = DbType.String;
  			//param.NpgsqlDbType = NpgsqlDbType.Text;
  			param.Size = test.Length;
  			param.Value = test;
  			command.Parameters.Add(param);
  			
  			NpgsqlDataReader dr = command.ExecuteReader();
  			
  			dr.Read();
  			
  			String result = dr.GetString(1);
  			
  			Assert.AreEqual(test, result);
  			
  		}
  		
  		[Test]
  		public void GetStringWithQuoteWithParameter()
  		{
  			_conn.Open();
  			NpgsqlCommand command = new NpgsqlCommand("select * from tablea where field_text = :value;", _conn);
  			
  			String test = "Text with ' single quote";
  			NpgsqlParameter param = new NpgsqlParameter();
  			param.ParameterName = "value";
  			param.DbType = DbType.String;
  			//param.NpgsqlDbType = NpgsqlDbType.Text;
  			param.Size = test.Length;
  			param.Value = test;
  			command.Parameters.Add(param);
  			
  
gt: 			NpgsqlDataReader dr = command.ExecuteReader();