Current example for sphere
TEST.CXX
#include <gtest/gtest.h>
#include “sphere.h”
#include <vtkSphereSource.h>
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
//Sphere_class* SC_PTR = get_sphere_obj();
Sphere_class SC;
bool test_setup = false;
void setup_test()
{
if (!test_setup)
{
test_setup = true;
SC.draw_sphere();
}
}
TEST(create_sphere_T1, sphere_pipeline_object_exists)
{
setup_test();
int sum_of_working_objects = 0;
int expected_num_working_objs = 6;
if (SC.source != NULL) { sum_of_working_objects++; }
if (SC.mapper != NULL) { sum_of_working_objects++; }
if (SC.renderer != NULL) { sum_of_working_objects++; }
if (SC.render_window != NULL) { sum_of_working_objects++; }
if (SC.interactor != NULL) { sum_of_working_objects++; }
if (SC.actor != NULL) { sum_of_working_objects++; }
ASSERT_EQ(expected_num_working_objs, sum_of_working_objects);
}
TEST(create_sphere_T2, sphere_center_at_origin)
{
setup_test();
bool expected_bool = false;
bool actual_bool = false;
double expected_COM_array[3] = { 0 };
double get_actual_array[3];
if (SC.centre_of_sphere[0] == expected_COM_array[0] && SC.centre_of_sphere[1] == expected_COM_array[1] && SC.centre_of_sphere[2] == expected_COM_array[2])
{
actual_bool = true;
}
ASSERT_EQ(expected_bool, actual_bool) << "expected_COM_array: " << expected_COM_array[0] << " " << expected_COM_array[1] << " " << expected_COM_array[2] << " actual " << SC.centre_of_sphere[0] << " " << SC.centre_of_sphere[1] << " " << SC.centre_of_sphere[2];
}
TEST(create_sphere_T3, radius_is_5) {
setup_test();
double expected_COM = 5.0;
ASSERT_EQ(expected_COM, SC.source->GetRadius());
}
TEST(create_sphere_T4, sphere_output_has_poly) {
setup_test();
bool expected = true;
bool actual = false;
if (SC.source->GetOutput()->GetNumberOfPoints() > 0 )
{
actual = true;
}
ASSERT_EQ(expected, actual) << "num points : " << SC.source->GetOutput()->GetNumberOfPoints();
}
TEST(create_sphere_T5, mapper_is_connected) {
setup_test();
int expected = 1;
ASSERT_EQ(expected, SC.mapper->GetTotalNumberOfInputConnections());
}
TEST(create_sphere_T6, actor_has_mapper) {
setup_test();
int expected = 1;
ASSERT_EQ(expected, SC.actor->GetMapper()->GetTotalNumberOfInputConnections());
}
TEST(create_sphere_T6,renderer_has_actor) {
setup_test();
int expected_num_items = 1;
ASSERT_EQ(expected_num_items, SC.renderer->GetActors()->GetNumberOfItems());
}
TEST(create_sphere_T7,renderwindow_has_renderer) {
setup_test();
int expected = 1;
ASSERT_EQ(expected, SC.render_window->HasRenderer(SC.renderer)) << "has renderer " << SC.render_window->HasRenderer(SC.renderer) << endl;
}
TEST(create_sphere_T7,renderwindow_has_interactor) {
setup_test();
bool expected = true;
bool actual = false;
if (SC.render_window->GetInteractor() != NULL)
{
actual = true;
}
ASSERT_EQ(expected, actual);
}
CXX
#include <vtkSphereSource.h>
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <gtest/gtest.h>
#include “sphere.h”
#include <vtkConnectivityFilter.h>
#include <gmock/gmock.h >
int main(int argc, char*argv[]) //int, char *[])
{
testing::InitGoogleTest(&argc, argv);
RUN_ALL_TESTS();
}
void Sphere_class::draw_sphere()
{
source->SetCenter(0, 0, 1);
source->Modified();
source->Update();
source->GetCenter(centre_of_sphere);
source->SetRadius(5.0);
source->Modified();
source->Update();
mapper->SetInputConnection(source->GetOutputPort());
mapper->Update();
actor->SetMapper(mapper);
renderer->AddActor(actor);
render_window->AddRenderer(renderer);
render_window->Render();
render_window->SetInteractor(interactor);
render_window->GetInteractor()->Start();
}
SPHERE.H
#ifndef H_SPHERE
#define H_SPHERE
#include <vtkSmartPointer.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
class Sphere_class
{
public:
vtkSmartPointer<vtkSphereSource> source = vtkSmartPointer<vtkSphereSource>::New();
vtkSmartPointer<vtkPolyDataMapper>mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> render_window = vtkSmartPointer<vtkRenderWindow>::New();
vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
double centre_of_sphere[3];
void draw_sphere();
};
#endif // !H_SPHERE