#include <cstdlib>
#include <iostream>
#include "Vector.h"
using std::cout;
using std::endl;
using vector333::Vector;
int main() {
Vector v1;
cout << "default Vector, should be (0,0,0): " << v1 << endl;
Vector v2(1, 2, 3);
cout << "Vector with initial values, should be (1,2,3): " << v2 << endl;
Vector v3(v2);
cout << "Vector from copy constructor, should be (1,2,3): " << v3 << endl;
Vector v4(3.1, -2.5, 2.7);
v1 = v3 = v4;
cout << "Vector assignment, should have three copies of (3.1,-2.5,2.7):\n";
cout << " " << v1 << " " << v3 << " " << v4 << endl;
cout << "Updating assignment, should have two copies of (4.1,-0.5,5.7):\n";
v1 = v3 += v2;
cout << " " << v1 << " = " << v3 << endl;
cout << "Updating assignment, should have two copies of (3.1,-2.5,2.7):\n";
v1 = v3 -= v2;
cout << " " << v1 << " = " << v3 << endl;
cout << "Arithmetic:" << endl;
cout << " " << v1 << " + " << v2 << " = " << v1+v2 << endl;
cout << " " << v1 << " - " << v2 << " = " << v1-v2 << endl;
cout << "Dot product: (a,b,c) * (x,y,z) = (ax+by+cz)" << endl;
cout << " " << v2 << " * " << v2 << " = " << v2*v2 << endl;
cout << "Scalar product: (a,b,c) * k = (ak,bk,ck)" << endl;
cout << " " << v1 << " * 2 = " << v1*2 << endl;
cout << " 2 * " << v1 << " = " << 2*v1 << endl;
return EXIT_SUCCESS;
}