From 0340403c5272ac926a2f519d319f50417eaed09f Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Fri, 20 Jan 2012 10:08:16 +0100
Subject: [PATCH] Add more phpunit tests

---
 test/phpunit/AllTests.php     |   4 +-
 test/phpunit/FilesLibTest.php | 129 ++++++++++++++++++++++++++++++++++
 2 files changed, 132 insertions(+), 1 deletion(-)
 create mode 100644 test/phpunit/FilesLibTest.php

diff --git a/test/phpunit/AllTests.php b/test/phpunit/AllTests.php
index 14b07e05196..3300e6749d6 100644
--- a/test/phpunit/AllTests.php
+++ b/test/phpunit/AllTests.php
@@ -58,7 +58,9 @@ class AllTests
         //$suite->addTestSuite('CoreTest');
 		require_once dirname(__FILE__).'/DateLibTest.php';
 		$suite->addTestSuite('DateLibTest');
-        require_once dirname(__FILE__).'/FunctionsTest.php';
+		require_once dirname(__FILE__).'/DateLibTest.php';
+		$suite->addTestSuite('FilesLibTest');
+		require_once dirname(__FILE__).'/FunctionsTest.php';
         $suite->addTestSuite('FunctionsTest');
 
         require_once dirname(__FILE__).'/SecurityTest.php';
diff --git a/test/phpunit/FilesLibTest.php b/test/phpunit/FilesLibTest.php
new file mode 100644
index 00000000000..aa1040320fa
--- /dev/null
+++ b/test/phpunit/FilesLibTest.php
@@ -0,0 +1,129 @@
+<?php
+/* Copyright (C) 2010 Laurent Destailleur  <eldy@users.sourceforge.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * or see http://www.gnu.org/
+ */
+
+/**
+ *      \file       test/phpunit/FilesLibTest.php
+ *		\ingroup    test
+ *      \brief      PHPUnit test
+ *		\remarks	To run this script as CLI:  phpunit filename.php
+ */
+
+global $conf,$user,$langs,$db;
+//define('TEST_DB_FORCE_TYPE','mysql');	// This is to force using mysql driver
+require_once 'PHPUnit/Autoload.php';
+require_once dirname(__FILE__).'/../../htdocs/master.inc.php';
+require_once dirname(__FILE__).'/../../htdocs/core/lib/files.lib.php';
+
+if (empty($user->id))
+{
+	print "Load permissions for admin user nb 1\n";
+	$user->fetch(1);
+	$user->getrights();
+}
+$conf->global->MAIN_DISABLE_ALL_MAILS=1;
+
+
+/**
+ * Class for PHPUnit tests
+ *
+ * @backupGlobals disabled
+ * @backupStaticAttributes enabled
+ * @remarks	backupGlobals must be disabled to have db,conf,user and lang not erased.
+ */
+class FilesLibTest extends PHPUnit_Framework_TestCase
+{
+	protected $savconf;
+	protected $savuser;
+	protected $savlangs;
+	protected $savdb;
+
+	/**
+	 * Constructor
+	 * We save global variables into local variables
+	 *
+	 * @return FilesLibTest
+	 */
+	function FilesLibTest()
+	{
+		//$this->sharedFixture
+		global $conf,$user,$langs,$db;
+		$this->savconf=$conf;
+		$this->savuser=$user;
+		$this->savlangs=$langs;
+		$this->savdb=$db;
+
+		print __METHOD__." db->type=".$db->type." user->id=".$user->id;
+		//print " - db ".$db->db;
+		print "\n";
+	}
+
+	// Static methods
+  	public static function setUpBeforeClass()
+    {
+    	global $conf,$user,$langs,$db;
+		$db->begin();	// This is to have all actions inside a transaction even if test launched without suite.
+
+    	print __METHOD__."\n";
+    }
+    public static function tearDownAfterClass()
+    {
+    	global $conf,$user,$langs,$db;
+		$db->rollback();
+
+		print __METHOD__."\n";
+    }
+
+	/**
+	 */
+    protected function setUp()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		print __METHOD__."\n";
+    }
+	/**
+	 */
+    protected function tearDown()
+    {
+    	print __METHOD__."\n";
+    }
+
+   /**
+     */
+    public function testDolCountNbOfLine()
+    {
+    	global $conf,$user,$langs,$db;
+		$conf=$this->savconf;
+		$user=$this->savuser;
+		$langs=$this->savlangs;
+		$db=$this->savdb;
+
+		$file=dirname(__FILE__).'/Example_import_company_1.csv';
+		$result=dol_count_nb_of_line($file);
+    	print __METHOD__." result=".$result."\n";
+		$this->assertEquals(2,$result);
+
+		return $result;
+    }
+
+}
+?>
\ No newline at end of file
-- 
GitLab