summaryrefslogblamecommitdiff
path: root/src/test/Vector3DTest.cc
blob: c9bd3c7e80240ec23dff5974ca3d8fa230f13b51 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11






                             



                   
                       





                     
            























                                                  

                       
                                                                                                   
 
                                       
                                                                                 

                     
                                            


                            
                                             
                                                     



                               





                                                             



                                                                 
/*
 * Vector3DTest.cc
 *
 *  Created on: Mar 1, 2011
 *      Author: Jakob Odersky
 */

#include <iostream>
#include <assert.h>
#include <iomanip>
#include <limits>
#include "exceptions.h"
#include "Vector3D.h"

using namespace std;
using namespace vhc;


int main() {
	Vector3D vect1(1.0, 2, -0.1);
	Vector3D vect2(2.6, 3.5, 4.1);
	Vector3D vect3 = vect1;

	cout << "Vecteur 1 :";
	cout << vect1;

	cout << "Vecteur 2 :";
	cout << vect2;

	cout << "Le vecteur 1 est ";
	if (Vector3D::ae(vect1, vect2)) {
	    cout << "egal au";
	} else {
	    cout << "différent du";
	}
	cout << " vecteur 2," << endl << "et est";
	if (Vector3D::ae(vect1, vect3)) {
	    cout << "egal au";
	} else {
	    cout << "différent du";
	}
	cout << " vecteur 3." << endl;


	//addition test
	assert(Vector3D::ae(Vector3D(1, -0.9, 57683) + Vector3D(-1, 0.9, -57683), Vector3D::Null));

	//addition, multiplication test
	assert(Vector3D::ae(Vector3D(4, 0, 16) / 4, -Vector3D(0.25, 0, 1) * -4));

	//length test
	assert(Vector3D(0,3,4).norm() == 5);

	bool caught = false;
	try {
		Vector3D n = ~Vector3D::Null;
	} catch (UnsupportedOperationException& ex) {
		caught = true;
	};
	assert(caught == true);

	//vector product test
	assert(Vector3D::i.cross(Vector3D::j)==Vector3D::k);
	assert(Vector3D::j.cross(Vector3D::k)==Vector3D::i);
	assert(Vector3D::k.cross(Vector3D::i)==Vector3D::j);
	assert(Vector3D::j.cross(Vector3D::i)==-Vector3D::k);

	cout << "Vector3D: tests completed successfully" << endl;

	return 0;
}