public void PqsqlParameterBufferTest2()
        {
            PqsqlParameterBuffer buf = new PqsqlParameterBuffer();

            buf.AddParameter(new PqsqlParameter("p1", DbType.Int32));
            buf.AddParameter(new PqsqlParameter("p2", DbType.Boolean)
            {
                Direction = ParameterDirection.InputOutput
            });
            buf.AddParameter(new PqsqlParameter("p3", DbType.Double)
            {
                Direction = ParameterDirection.Output
            });

            IntPtr ptyps;             // oid*
            IntPtr pvals;             // char**
            IntPtr plens;             // int*
            IntPtr pfrms;             // int*

            int num = buf.GetQueryParams(out ptyps, out pvals, out plens, out pfrms);

            Assert.AreEqual(2, num);
            Assert.AreNotEqual(IntPtr.Zero, ptyps);
            Assert.AreNotEqual(IntPtr.Zero, pvals);
            Assert.AreNotEqual(IntPtr.Zero, plens);
            Assert.AreNotEqual(IntPtr.Zero, pfrms);

            buf.Dispose();
        }
        public void PqsqlParameterBufferTest1()
        {
            PqsqlParameterBuffer buf = new PqsqlParameterBuffer();

            IntPtr ptyps;             // oid*
            IntPtr pvals;             // char**
            IntPtr plens;             // int*
            IntPtr pfrms;             // int*

            int num = buf.GetQueryParams(out ptyps, out pvals, out plens, out pfrms);

            Assert.AreEqual(0, num);
            Assert.AreEqual(IntPtr.Zero, ptyps);
            Assert.AreEqual(IntPtr.Zero, pvals);
            Assert.AreEqual(IntPtr.Zero, plens);
            Assert.AreEqual(IntPtr.Zero, pfrms);

            buf.Dispose();
        }
        public void PqsqlParameterBufferTest3()
        {
            PqsqlParameterBuffer buf = new PqsqlParameterBuffer();

            buf.AddParameter(new PqsqlParameter("p1", DbType.Int32));
            buf.AddParameter(new PqsqlParameter("p2", DbType.Boolean)
            {
                Direction = ParameterDirection.InputOutput
            });
            buf.AddParameter(new PqsqlParameter("p3", DbType.Double)
            {
                Direction = ParameterDirection.Output
            });

            IntPtr ptyps;             // oid*
            IntPtr pvals;             // char**
            IntPtr plens;             // int*
            IntPtr pfrms;             // int*

            int num = buf.GetQueryParams(out ptyps, out pvals, out plens, out pfrms);

            Assert.AreEqual(2, num);
            Assert.AreNotEqual(IntPtr.Zero, ptyps);
            Assert.AreNotEqual(IntPtr.Zero, pvals);
            Assert.AreNotEqual(IntPtr.Zero, plens);
            Assert.AreNotEqual(IntPtr.Zero, pfrms);

            // after we have called GetQueryParams above, we cannot add more parameters
            buf.AddParameter(new PqsqlParameter("p4", DbType.Int64));
            num = buf.GetQueryParams(out ptyps, out pvals, out plens, out pfrms);

            Assert.AreEqual(2, num);
            Assert.AreNotEqual(IntPtr.Zero, ptyps);
            Assert.AreNotEqual(IntPtr.Zero, pvals);
            Assert.AreNotEqual(IntPtr.Zero, plens);
            Assert.AreNotEqual(IntPtr.Zero, pfrms);

            // but we can reset the buffer
            buf.Clear();
            num = buf.GetQueryParams(out ptyps, out pvals, out plens, out pfrms);

            Assert.AreEqual(0, num);
            Assert.AreEqual(IntPtr.Zero, ptyps);
            Assert.AreEqual(IntPtr.Zero, pvals);
            Assert.AreEqual(IntPtr.Zero, plens);
            Assert.AreEqual(IntPtr.Zero, pfrms);

            // and start all over again
            buf.AddParameter(new PqsqlParameter("p1", DbType.Int32));
            buf.AddParameter(new PqsqlParameter("p2", DbType.Boolean)
            {
                Direction = ParameterDirection.InputOutput
            });
            buf.AddParameter(new PqsqlParameter("p3", DbType.Double)
            {
                Direction = ParameterDirection.Output
            });
            buf.AddParameter(new PqsqlParameter("p4", DbType.Int64));
            num = buf.GetQueryParams(out ptyps, out pvals, out plens, out pfrms);

            Assert.AreEqual(3, num);
            Assert.AreNotEqual(IntPtr.Zero, ptyps);
            Assert.AreNotEqual(IntPtr.Zero, pvals);
            Assert.AreNotEqual(IntPtr.Zero, plens);
            Assert.AreNotEqual(IntPtr.Zero, pfrms);

            buf.Dispose();
        }