bool do_test(vector<int> attributes, int __expected) {
    time_t startClock = clock();
    SlimeXSlimeRancher2 *instance = new SlimeXSlimeRancher2();
    int __result = instance->train(attributes);
    double elapsed = (double)(clock() - startClock) / CLOCKS_PER_SEC;
    delete instance;

    if (__result == __expected) {
        cout << "PASSED!" << " (" << elapsed << " seconds)" << endl;
        return true;
    }
    else {
        cout << "FAILED!" << " (" << elapsed << " seconds)" << endl;
        cout << "           Expected: " << to_string(__expected) << endl;
        cout << "           Received: " << to_string(__result) << endl;
        return false;
    }
}
// BEGIN KAWIGIEDIT TESTING
// Generated by KawigiEdit 2.1.4 (beta) modified by pivanof
bool KawigiEdit_RunTest(int testNum, vector <int> p0, bool hasAnswer, int p1) {
	cout << "Test " << testNum << ": [" << "{";
	for (int i = 0; int(p0.size()) > i; ++i) {
		if (i > 0) {
			cout << ",";
		}
		cout << p0[i];
	}
	cout << "}";
	cout << "]" << endl;
	SlimeXSlimeRancher2 *obj;
	int answer;
	obj = new SlimeXSlimeRancher2();
	clock_t startTime = clock();
	answer = obj->train(p0);
	clock_t endTime = clock();
	delete obj;
	bool res;
	res = true;
	cout << "Time: " << double(endTime - startTime) / CLOCKS_PER_SEC << " seconds" << endl;
	if (hasAnswer) {
		cout << "Desired answer:" << endl;
		cout << "\t" << p1 << endl;
	}
	cout << "Your answer:" << endl;
	cout << "\t" << answer << endl;
	if (hasAnswer) {
		res = answer == p1;
	}
	if (!res) {
		cout << "DOESN'T MATCH!!!!" << endl;
	} else if (double(endTime - startTime) / CLOCKS_PER_SEC >= 2) {
		cout << "FAIL the timeout" << endl;
		res = false;
	} else if (hasAnswer) {
		cout << "Match :-)" << endl;
	} else {
		cout << "OK, but is it right?" << endl;
	}
	cout << "" << endl;
	return res;
}
double test0() {
	int t0[] = {1,2,3};
	vector <int> p0(t0, t0+sizeof(t0)/sizeof(int));
	SlimeXSlimeRancher2 * obj = new SlimeXSlimeRancher2();
	clock_t start = clock();
	int my_answer = obj->train(p0);
	clock_t end = clock();
	delete obj;
	cout <<"Time: " <<(double)(end-start)/CLOCKS_PER_SEC <<" seconds" <<endl;
	int p1 = 3;
	cout <<"Desired answer: " <<endl;
	cout <<"\t" << p1 <<endl;
	cout <<"Your answer: " <<endl;
	cout <<"\t" << my_answer <<endl;
	if (p1 != my_answer) {
		cout <<"DOESN'T MATCH!!!!" <<endl <<endl;
		return -1;
	}
	else {
		cout <<"Match :-)" <<endl <<endl;
		return (double)(end-start)/CLOCKS_PER_SEC;
	}
}
// BEGIN CUT HERE
int main( int argc, char* argv[] ) {
    {
        int attributesARRAY[] = {1,2,3};
        vector <int> attributes( attributesARRAY, attributesARRAY+ARRSIZE(attributesARRAY) );
        SlimeXSlimeRancher2 theObject;
        eq(0, theObject.train(attributes),3);
    }
    {
        int attributesARRAY[] = {5,5};
        vector <int> attributes( attributesARRAY, attributesARRAY+ARRSIZE(attributesARRAY) );
        SlimeXSlimeRancher2 theObject;
        eq(1, theObject.train(attributes),0);
    }
    {
        int attributesARRAY[] = {900,500,100};
        vector <int> attributes( attributesARRAY, attributesARRAY+ARRSIZE(attributesARRAY) );
        SlimeXSlimeRancher2 theObject;
        eq(2, theObject.train(attributes),1200);
    }
}