Index: tests/coreInterface/CMakeLists.txt
===================================================================
--- tests/coreInterface/CMakeLists.txt	(revision 63776)
+++ tests/coreInterface/CMakeLists.txt	(working copy)
@@ -39,6 +39,7 @@
 set (ciTests_SRC
 	halfspace.cpp
 	primitives.cpp
+	Sphere.cpp
 )
 
 add_executable(tester_ci_primitives ${ciTests_SRC})
Index: tests/coreInterface/Sphere.cpp
===================================================================
--- tests/coreInterface/Sphere.cpp	(revision 0)
+++ tests/coreInterface/Sphere.cpp	(working copy)
@@ -0,0 +1,152 @@
+/*                S P H E R E . C P P
+* BRL-CAD
+*
+* Copyright (c) 2014 United States Government as represented by
+* the U.S. Army Research Laboratory.
+*
+* This file is in the public domain.
+*
+*                        DISCLAIMER OF LIABILITY
+*
+* THIS FILE WAS CAREFULLY TESTED BY THE AUTHOR AND IS MADE AVAILABLE TO YOU
+* FREE-OF-CHARGE IN A HIGH-GRADE ACTUAL STATUS. REFERENCE IS MADE HEREWITH TO
+* THE FACT THAT IT IS NOT POSSIBLE TO DEVELOP SOFTWARE PROGRAMS SO THAT THEY
+* ARE ERROR-FREE FOR ALL APPLICATION CONDITIONS. AS THE FILE IS LICENSED FREE
+* OF CHARGE THERE IS NO WARRANTY FOR IT, INSOFAR AS SUCH WARRANTY IS NOT A
+* MANDATORY REQUIREMENT OF THE APPLICABLE LAW, SUCH AS IN CASE OF WILFUL ACTS.
+* IN ADDITION THERE IS NO LIABILITY ALSO INSOFAR AS SUCH LIABILITY IS NOT A
+* MANDATORY REQUIREMENT OF THE APPLICABLE LAW, SUCH AS IN CASE OF WILFUL ACTS.
+*
+* YOU DECLARE YOU ARE IN AGREEMENT WITH THE USE OF THIS FILE UNDER THE
+* ABOVE-LISTED USAGE CONDITIONS AND THE EXCLUSION OF A GUARANTEE AND OF
+* LIABILITY. SHOULD INDIVIDUAL PROVISIONS IN THESE CONDITIONS BE IN FULL OR IN
+* PART VOID, INVALID OR CONTESTABLE, THE VALIDITY OF ALL OTHER PROVISIONS OR
+* AGREEMENTS ARE UNAFFECTED BY THIS. FURTHER THE PARTIES UNDERTAKE AT THIS
+* JUNCTURE TO AGREE A LEGALLY VALID REPLACEMENT CLAUSE WHICH MOST CLOSELY
+* APPROXIMATES THE ECONOMIC OBJECTIVES.
+*/
+/** @file Sphere.cpp
+*  This file is a coreInterface test for Sphere.cpp.
+*/
+#include <iostream>
+#include <brlcad/Sphere.h>
+using namespace BRLCAD;
+int testSphereCenter(BRLCAD::sphere sph, double expectedX, double expectedY, double expectedZ) /* Tests Sphere's Center function */
+{
+	if(sph.Center().coordinates[0]==expectedX && sph.center().coordinates[1]==expectedY && sph.center().coordinates[2]==expectedZ) return 0;		
+	return 1;
+}
+int testSphereClassName(BRLCAD::sphere sph) /* Tests Sphere's ClassName function */
+{
+	if(sph.ClassName()=="Sphere") return 0;
+	return 1;
+}
+int testSphereType(BRLCAD::sphere sph) /* Tests Sphere's Type function */
+{
+	if(sph.Type()=="Sphere") return 0;
+	return 1;
+}
+int testSphereIsValid(BRLCAD::sphere sph) /* Tests Sphere's SphereIsValid function */
+{
+	if(sph.IsValid()==true) return 0;
+	return 1;
+}
+int testSphereRadius(BRLCAD::sphere sph,double expectedRadius) /* Tests Sphere's SphereRadius function */
+{
+	if(sph.Radius()==expectedRadius) return 0;
+	return 1;
+}
+int testSphereClone(BRLCAD::Sphere sph) /* Tests Sphere's Clone function */
+{
+	BRLCAD::Sphere sph2;
+	sph2=sph.Clone();
+		if(sph2.Center().coordinates[0]==sph.Center().coordinates[0] && sph2.Center().coordinates[1]==sph.Center().coordinates[1] && sph2.Center().coordinates[2]==sph.Center().coordinates[2] && sph2.Radius()==sph.Radius() ) return 0; /* Checks if the two Spheres are equal */
+	return 1;
+}
+int testSphereSet() /* Tests Sphere's Set function */
+{
+	BRLCAD::Sphere sph2;
+	sph2.set(Vector3D(1.0,1.0,1.0),3.0);
+		if(sph2.Center().coordinates[0]==1.0 && sph2.Center().coordinates[1]==1.0 && sph2.Center().coordinates[2]==1.0 && sph2.Radius()==3.0) return 0; 
+	return 1;
+}
+int testSphereSetCenter(BRLCAD::Sphere sph, Vector3D coords) /* Tests Sphere's SetCenter function */
+{
+	sph.SetCenter(coords);
+		if(sph.Center().coordinates[0]==coords.coordinates[0] && sph.Center().coordinates[1]==coords.coordinates[1] && sph.Center().coordinates[2]==coords.coordinates[2]) return 0;
+	return 1;
+}
+int testSphereSetRadius(BRLCAD::Sphere sph, double expectedRadius) /* Tests Sphere's SetRadius function */
+{
+	sph.SetRadius(expectedRadius);
+		if(sph.Radius()==expectedRadius) return 0;
+	return 1;
+}
+int testSphereCopy(BRLCAD::Sphere sph) /* Tests Sphere's Copy constructor */
+{
+	BRLCAD::Sphere sph2(sph);
+		if(sph2.Center().coordinates[0]==sph.Center().coordinates[0] && sph2.Center().coordinates[1]==sph.Center().coordinates[1] && sph2.Center().coordinates[2]==sph.Center().coordinates[2] && sph2.Radius()==sph.Radius() ) return 0; /* Checks if the two Spheres are equal */
+	return 1;
+}	
+
+
+/* We now run all the tests */
+void test_sphere(BRLCAD::Database& database)
+{	
+	BRLCAD::sphere sph; /* Initialize a Sphere to test on */
+	sph.SetCenter(Vector3D(1.0,1.0,1.0));
+	sph.SetRadius(3.0);
+	bool ok=0;
+	if( testSphereIsValid(sph)==1 )
+	{
+		ok=1;
+		std::cout<<"Test failed at function : IsValid()";
+	}
+	if( testSphereCenter(sph, 1.0, 1.0, 1.0)==1 )
+	{
+		ok=1;
+		std::cout<<"Test failed at function : Center()";
+	}
+	if( testSphereRadius(sph, 3.0)==1 )
+	{
+		ok=1;	
+		std::cout<<"Test failed at function : Radius()";
+	}
+	if( testSphereClassName(sph)==1 )
+	{
+		ok=1;
+		std::cout<<"Test failed at function : ClassName()";
+	}
+	if( testSphereType(sph)==1 )
+	{
+		ok=1;
+		std::cout<<"Test failed at function : Type()";
+	}
+	if( testSphereSet()==1 )
+	{
+		ok=1;
+		std::cout<<"Test failed at function: Set()";
+	}
+	if( testSphereSetCenter(sph, Vector3D(1.0,1.0,1.0))==1 )
+	{
+		ok=1;
+		std::cout<<"Test failed at function : SetCenter()";
+	}
+	if( testSphereSetRadius(sph, 3.0)==1 )
+	{
+		ok=1;
+		std::cout<<"Test failed at function : SetRadius()";
+	}
+	if( testSphereClone(sph)==1 )
+	{
+		ok=1;
+		std::cout<<"Test failed at function : Clone()";
+	}
+	if( testSphereCopy(sph)==1 )
+	{
+		ok=1;
+		std::cout<<"Test failed at the copy constructor";
+	}
+	if( ok==0 ) /* We only add it to the database if it failed no tests */
+		database.add(sph);
+}
Index: tests/coreInterface/primitives.cpp
===================================================================
--- tests/coreInterface/primitives.cpp	(revision 63776)
+++ tests/coreInterface/primitives.cpp	(working copy)
@@ -47,6 +47,7 @@
 
 	    if (database.Load(argv[1])) {
 		test_halfspace(database);
+		test_sphere(database);
 	    } else {
 		std::cout << "Could not load file: " << argv[1] << std::endln;
 		ret = 2;
Index: tests/coreInterface/primitives.h
===================================================================
--- tests/coreInterface/primitives.h	(revision 63776)
+++ tests/coreInterface/primitives.h	(working copy)
@@ -30,6 +30,7 @@
 
 
 void test_halfspace(BRLCAD::Database& database);
+void test_sphere(BRLCAD::Database& database);
 
 
 #endif // PRIMITIVES_H
