#include "cxx_dprog.hh"
#include <iostream>

using namespace std;
using namespace dprog;

int
main()
{
    Matrix<int> m_1dim(1, static_cast<size_t>(10));

    for (int i = 0; i < 5; ++i)
	{
	    m_1dim.cell(i) = i;
	}

    assert(m_1dim.cell(0) == 0);
    assert(m_1dim.cell(1) == 1);
    assert(m_1dim.cell(2) == 2);
    assert(m_1dim.cell(3) == 3);
    assert(m_1dim.cell(4) == 4);

    Matrix<int> m_2dim(2, static_cast<size_t>(3), static_cast<size_t>(2));

    for (int i = 0; i < 3; ++i)
	for (int j = 0; j < 2; ++j)
	    m_2dim.cell(i,j) = i*10 + j;

    assert(m_2dim.cell(0,0) ==  0);
    assert(m_2dim.cell(0,1) ==  1);
    assert(m_2dim.cell(1,0) == 10);
    assert(m_2dim.cell(1,1) == 11);
    assert(m_2dim.cell(2,0) == 20);
    assert(m_2dim.cell(2,1) == 21);

    Matrix2<int> m2_2dim(static_cast<size_t>(3), static_cast<size_t>(2));

    for (int i = 0; i < 3; ++i)
	for (int j = 0; j < 2; ++j)
	    m2_2dim.cell(i,j) = i*10 + j;

    assert(m2_2dim.cell(0,0) ==  0);
    assert(m2_2dim.cell(0,1) ==  1);
    assert(m2_2dim.cell(1,0) == 10);
    assert(m2_2dim.cell(1,1) == 11);
    assert(m2_2dim.cell(2,0) == 20);
    assert(m2_2dim.cell(2,1) == 21);

    Matrix<int> m_3dim(3,
		       static_cast<size_t>(2),
		       static_cast<size_t>(3),
		       static_cast<size_t>(2));

    for (int i = 0; i < 2; ++i)
	for (int j = 0; j < 3; ++j)
	    for (int k = 0; k < 2; ++k)
		m_3dim.cell(i,j,k) = 10*(10*i + j) + k;

    assert(m_3dim.cell(0,0,0) ==   0);
    assert(m_3dim.cell(0,0,1) ==   1);
    assert(m_3dim.cell(0,1,0) ==  10);
    assert(m_3dim.cell(0,1,1) ==  11);
    assert(m_3dim.cell(0,2,0) ==  20);
    assert(m_3dim.cell(0,2,1) ==  21);

    assert(m_3dim.cell(1,0,0) == 100);
    assert(m_3dim.cell(1,0,1) == 101);
    assert(m_3dim.cell(1,1,0) == 110);
    assert(m_3dim.cell(1,1,1) == 111);
    assert(m_3dim.cell(1,2,0) == 120);
    assert(m_3dim.cell(1,2,1) == 121);


    return 0;
}


syntax highlighted by Code2HTML, v. 0.9.1