diff --git a/Tests/UnitTests/TestCore/LatticeBasisTest.h b/Tests/UnitTests/TestCore/LatticeBasisTest.h
new file mode 100644
index 0000000000000000000000000000000000000000..5069a5b21ed122f1e6e9689cd49cbdea11a73177
--- /dev/null
+++ b/Tests/UnitTests/TestCore/LatticeBasisTest.h
@@ -0,0 +1,123 @@
+#ifndef LATTICEBASISTEST_H
+#define LATTICEBASISTEST_H
+
+#include "LatticeBasis.h"
+#include "Particle.h"
+#include "Materials.h"
+#include "Units.h"
+#include "HomogeneousMaterial.h"
+#include "ParticleInfo.h"
+#include "FormFactorFullSphere.h"
+#include <iostream>
+
+
+class LatticeBasisTest : public ::testing::Test
+{
+protected:
+    LatticeBasisTest(){}
+    virtual ~LatticeBasisTest(){}
+};
+
+TEST_F(LatticeBasisTest, LatticeBasisDefaultConstructor)
+{
+    LatticeBasis *lb = new LatticeBasis();
+    Particle particle;
+    std::vector<kvector_t > positions;
+    positions.push_back(kvector_t(0.0,0.0,0.0));
+    EXPECT_EQ("LatticeBasis",lb->getName());
+    lb->addParticle(particle, positions);
+    EXPECT_EQ(particle.getMaterial(),lb->getParticle(0)->getAmbientMaterial());
+    EXPECT_EQ(particle.getName(),lb->getParticle(0)->getName());
+    EXPECT_EQ(particle.getTransform3D(),lb->getParticle(0)->getTransform3D());
+    EXPECT_EQ(positions, lb->getParticlePositions(0));
+
+    HomogeneousMaterial material("Air",0.0,0.0);
+    lb->setAmbientMaterial(material);
+    EXPECT_EQ("Air", lb->getAmbientMaterial()->getName());
+    EXPECT_EQ(1.0, lb->getAmbientMaterial()->getRefractiveIndex());
+
+
+    delete lb;
+
+}
+
+TEST_F(LatticeBasisTest, LatticeBasisConstructorWithOneParameter)
+{
+    Particle particle;
+    LatticeBasis *lb = new LatticeBasis(particle);
+    std::vector<kvector_t > positions;
+    positions.push_back(kvector_t(0.0,0.0,0.0));
+    EXPECT_EQ("LatticeBasis",lb->getName());
+    lb->addParticle(particle, positions);
+    EXPECT_EQ(particle.getMaterial(),lb->getParticle(0)->getAmbientMaterial());
+    EXPECT_EQ(particle.getName(),lb->getParticle(0)->getName());
+    EXPECT_EQ(particle.getTransform3D(),lb->getParticle(0)->getTransform3D());
+    EXPECT_EQ(particle.getMaterial(),lb->getParticle(1)->getAmbientMaterial());
+    EXPECT_EQ(particle.getName(),lb->getParticle(1)->getName());
+    EXPECT_EQ(particle.getTransform3D(),lb->getParticle(1)->getTransform3D());
+    EXPECT_EQ(positions, lb->getParticlePositions(0));
+    EXPECT_EQ(positions, lb->getParticlePositions(1));
+
+    HomogeneousMaterial material("Air",0.0,0.0);
+    lb->setAmbientMaterial(material);
+    EXPECT_EQ("Air", lb->getAmbientMaterial()->getName());
+    EXPECT_EQ(1.0, lb->getAmbientMaterial()->getRefractiveIndex());
+
+    delete lb;
+}
+
+
+TEST_F(LatticeBasisTest, LatticeBasisConstructorWithTwoParameter)
+{
+    Particle particle;
+    std::vector<kvector_t > positions;
+    positions.push_back(kvector_t(1.0,1.0,1.0));
+    LatticeBasis *lb = new LatticeBasis(particle, positions);
+
+    EXPECT_EQ("LatticeBasis",lb->getName());
+    lb->addParticle(particle, positions);
+    EXPECT_EQ(particle.getMaterial(),lb->getParticle(0)->getAmbientMaterial());
+    EXPECT_EQ(particle.getName(),lb->getParticle(0)->getName());
+    EXPECT_EQ(particle.getTransform3D(),lb->getParticle(0)->getTransform3D());
+    EXPECT_EQ(particle.getMaterial(),lb->getParticle(1)->getAmbientMaterial());
+    EXPECT_EQ(particle.getName(),lb->getParticle(1)->getName());
+    EXPECT_EQ(particle.getTransform3D(),lb->getParticle(1)->getTransform3D());
+    EXPECT_EQ(positions, lb->getParticlePositions(0));
+    EXPECT_EQ(positions, lb->getParticlePositions(1));
+
+    HomogeneousMaterial material("Air",0.0,0.0);
+    lb->setAmbientMaterial(material);
+    EXPECT_EQ("Air", lb->getAmbientMaterial()->getName());
+    EXPECT_EQ(1.0, lb->getAmbientMaterial()->getRefractiveIndex());
+
+    delete lb;
+}
+
+TEST_F(LatticeBasisTest, LatticeBasisClone)
+{
+    LatticeBasis *lb = new LatticeBasis();
+    Particle particle;
+    std::vector<kvector_t > positions;
+    positions.push_back(kvector_t(1.0,1.0,1.0));
+    HomogeneousMaterial material("Air",0.0,0.0);
+    lb->addParticle(particle, positions);
+    lb->setAmbientMaterial(material);
+    LatticeBasis *lbClone = lb->clone();
+
+    EXPECT_EQ(lbClone->getName(),lb->getName());
+
+    EXPECT_EQ(lbClone->getParticle(0)->getAmbientMaterial()->getRefractiveIndex(),lb->getParticle(0)->getAmbientMaterial()->getRefractiveIndex());
+    EXPECT_EQ(lbClone->getParticle(0)->getName(), lb->getParticle(0)->getName());
+    EXPECT_EQ(lbClone->getParticle(0)->getTransform3D(),lb->getParticle(0)->getTransform3D());
+    EXPECT_EQ(positions, lb->getParticlePositions(0));
+
+
+    EXPECT_EQ("Air", lb->getAmbientMaterial()->getName());
+    EXPECT_EQ(1.0, lb->getAmbientMaterial()->getRefractiveIndex());
+
+    delete lb;
+    delete lbClone;
+}
+
+
+#endif
diff --git a/Tests/UnitTests/TestCore/main.cpp b/Tests/UnitTests/TestCore/main.cpp
index d7a44a0d3d86290cfeae63bf36a659912be19fde..17c9bdaf3b12bb0bda4ff678086530b0f747574e 100644
--- a/Tests/UnitTests/TestCore/main.cpp
+++ b/Tests/UnitTests/TestCore/main.cpp
@@ -7,6 +7,7 @@
 #include "ChiSquaredModuleTest.h"
 #include "CVectorTest.h"
 #include "DetectorTest.h"
+#include "DistributionsTest.h"
 #include "DWBASimulationTest.h"
 #include "FormFactorTest.h"
 #include "InstrumentTest.h"
@@ -22,6 +23,7 @@
 #include "RealParameterWrapperTest.h"
 #include "SimulationTest.h"
 #include "ThreadInfoTest.h"
+#include "LatticeBasisTest.h"
 #include "LayerRoughnessTest.h"
 #include "ParticleInfoTest.h"
 #include "LLDataTest.h"
@@ -45,7 +47,7 @@
 #include "SpecularSimulationTest.h"
 #include "ParticleCoreShellTest.h"
 #include "ParameterDistributionTest.h"
-#include "DistributionsTest.h"
+
 
 struct ErrorStreamRedirect {
     ErrorStreamRedirect( std::streambuf * new_buffer )