diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..8a236fa
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,14 @@
+language: python
+
+python:
+ - 2.7
+
+before_install:
+ - sudo apt-get install python2.7 python-twisted python-openssl python-qt4 python-qt4reactor python-sip-dev scons
+
+install:
+ - scons -C rdpy/core install
+
+script:
+ - python -m unittest discover -s test
+
diff --git a/tests/const.py b/test/test_base_const.py
similarity index 54%
rename from tests/const.py
rename to test/test_base_const.py
index 46c2339..39e2a2a 100644
--- a/tests/const.py
+++ b/test/test_base_const.py
@@ -1,6 +1,30 @@
-'''
-@author: sylvain
-'''
+#
+# Copyright (c) 2014 Sylvain Peyrefitte
+#
+# This file is part of rdpy.
+#
+# rdpy 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 3 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 .
+#
+
+"""
+unit test for rdpy.base.const module
+"""
+
+import os, sys
+# Change path so we find rdpy
+sys.path.insert(1, os.path.join(sys.path[0], '..'))
+
import unittest
import rdpy.base.const
import rdpy.network.type
diff --git a/tests/layer.py b/test/test_network_layer.py
similarity index 67%
rename from tests/layer.py
rename to test/test_network_layer.py
index f7f3a6c..4bf5e69 100644
--- a/tests/layer.py
+++ b/test/test_network_layer.py
@@ -1,6 +1,30 @@
-'''
-@author: sylvain
-'''
+#
+# Copyright (c) 2014 Sylvain Peyrefitte
+#
+# This file is part of rdpy.
+#
+# rdpy 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 3 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 .
+#
+
+"""
+unit test for rdpy.network.layer module
+"""
+
+import os, sys
+# Change path so we find rdpy
+sys.path.insert(1, os.path.join(sys.path[0], '..'))
+
import unittest
import rdpy.network.layer
diff --git a/tests/type.py b/test/test_network_type.py
similarity index 94%
rename from tests/type.py
rename to test/test_network_type.py
index d35249e..dc98202 100644
--- a/tests/type.py
+++ b/test/test_network_type.py
@@ -1,6 +1,30 @@
-'''
-@author: sylvain
-'''
+#
+# Copyright (c) 2014 Sylvain Peyrefitte
+#
+# This file is part of rdpy.
+#
+# rdpy 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 3 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 .
+#
+
+"""
+unit test for rdpy.network.type module
+"""
+
+import os, sys
+# Change path so we find rdpy
+sys.path.insert(1, os.path.join(sys.path[0], '..'))
+
import unittest
import rdpy.network.type
from rdpy.base.error import InvalidSize
@@ -18,9 +42,9 @@ class TypeCase(unittest.TestCase):
self.assertEqual(c.value, 5, "invalid callable const")
def test_callable_value_lambda(self):
- '''
+ """
@summary: test if callable value with lambda ctor return dynamic value
- '''
+ """
c = rdpy.network.type.CallableValue(lambda:5)
self.assertEqual(c.value, 5, "invalid callable lambda")
diff --git a/test/test_protocol_rdp_x224.py b/test/test_protocol_rdp_x224.py
new file mode 100644
index 0000000..fa7d3fc
--- /dev/null
+++ b/test/test_protocol_rdp_x224.py
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2014 Sylvain Peyrefitte
+#
+# This file is part of rdpy.
+#
+# rdpy 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 3 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 .
+#
+
+"""
+unit test for rdpy.protocol.rdp.x224 module
+"""
+
+import os, sys
+# Change path so we find rdpy
+sys.path.insert(1, os.path.join(sys.path[0], '..'))
+
+import unittest
+
+class X224Case(unittest.TestCase):
+ '''
+ test case for x224 layer (RDP)
+ '''
+ def test_x224_client(self):
+ pass
diff --git a/test/test_protocol_rfb_rfb.py b/test/test_protocol_rfb_rfb.py
new file mode 100644
index 0000000..d0b8478
--- /dev/null
+++ b/test/test_protocol_rfb_rfb.py
@@ -0,0 +1,35 @@
+#
+# Copyright (c) 2014 Sylvain Peyrefitte
+#
+# This file is part of rdpy.
+#
+# rdpy 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 3 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 .
+#
+
+"""
+unit test for rdpy.protocol.rfb.rfb module
+"""
+
+import os, sys
+# Change path so we find rdpy
+sys.path.insert(1, os.path.join(sys.path[0], '..'))
+
+import unittest
+
+class RfbCase(unittest.TestCase):
+ '''
+ test casefor rfb layer (vnc)
+ '''
+ def testName(self):
+ pass
diff --git a/tests/rfb.py b/tests/rfb.py
deleted file mode 100644
index 786e7b2..0000000
--- a/tests/rfb.py
+++ /dev/null
@@ -1,11 +0,0 @@
-'''
-@author: sylvain
-'''
-import unittest
-
-class RfbCase(unittest.TestCase):
- '''
- test casefor rfb layer (vnc)
- '''
- def testName(self):
- pass
diff --git a/tests/x224.py b/tests/x224.py
deleted file mode 100644
index 004bed4..0000000
--- a/tests/x224.py
+++ /dev/null
@@ -1,11 +0,0 @@
-'''
-@author: sylvain
-'''
-import unittest
-
-class X224Case(unittest.TestCase):
- '''
- test case for x224 layer (RDP)
- '''
- def test_x224_client(self):
- pass