Question
Please test const object test for int dynamic array. Please test DynamicArray version as well ============================================== #ifndef DynamicArray_h #define DynamicArray_h template class DynamicArray { T
Please test const object test for int dynamic array.
Please test DynamicArray version as well
==============================================
#ifndef DynamicArray_h #define DynamicArray_h
template class DynamicArray { T *values; int cap; T dummy=T(); public: DynamicArray(int=2); // constructor // default=2 DynamicArray(const DynamicArray&); // copy constructor ~DynamicArray(){ delete [] values;} // destructor DynamicArray& operator=(const DynamicArray&); // assignment operator int capacity() const {return cap;} void capacity(int); // setter T operator[](int) const; // getter version T& operator[](int); // setter version };
template DynamicArray::DynamicArray(int cap) // constructor { dummy=T(); values=new T[cap]; this->cap=cap; for(int i=0; i values[i]=T(); }
template DynamicArray::DynamicArray(const DynamicArray& original) // copy constructor { cap=original.cap; values=new T[cap]; for(int i=0; i values[i]=original.values[i]; dummy=original.dummy; }
template DynamicArray& DynamicArray::operator=(const DynamicArray& original) { if(this!=&original) { delete [] values; cap=original.cap; values=new T[cap]; for(int i=0; i values[i]=original.values[i]; dummy=original.dummy; } return *this; }
template void DynamicArray::capacity(int cap) { T *temp=new T[cap]; int limit=(capcap ?cap: this->cap); for(int i=0; i temp[i]=values[i]; for(int i=limit; i temp[i]=T(); delete values; values=temp; this->cap=cap; }
template T DynamicArray::operator[](int index) const // getter { if(index<0) return dummy; if(index>=cap) capacity(2*index); return values[index]; }
template T& DynamicArray::operator[](int index) // setter { if(index<0) return dummy; if(index>=cap) capacity(2*index); return values[index]; }
#endif
============================================== #include #include
using namespace std;
#include
#include "DynamicArray.h" #include "DynamicArray.h" // test
int main() { cout << "file: " << __FILE__ << " "; // 1 Test all public functions cout << "============================================ "; DynamicArray a(100); cout << "Int DynamicArray Test: "; cout << "============================================ "; cout << "Testing DynamicArray::DynamicArray "; // constractor test for(int i=0; i<100; i++) assert(a[i]==0); cout << "Pass! "; cout << " Testing DynamicArray::capacity "; cout << "Expected: 100 "; cout << "ACTUAL: " << a.capacity(); assert(a.capacity()==100); //StaticArray::operator[]setter cout << " Testing the DynamicArray::operator[]setter "; a[10]=1; cout << "Expected: 1 for a[10] "; cout << "ACTUAL: " << a[10] << endl; assert(a[10]==1); a[-1000]=666; cout << " Expected: 666 for a[-1000] (dummy) "; cout << "ACTUAL: " << a[-1000] << endl; assert(a[-1000]==666); a[200]=10; cout << "Expected: the new capacity for a is 200*2 "; cout << "ACTUAL: " << a.capacity() << endl;
cout << " Testing the DynamicArray::operator[]getter "; DynamicArray a2 = a; for(int i=0; i<100; i++) assert(a[i]==a2[i]); cout << "Pass! ";
// 2 Const object test /* const DynamicArray c1(100); assert(c1.capacity()); assert(c1[0]==c1[0]); assert(c1[-1]==c1[-1]);*/ // 3 Object copy test
cout << " Object copy test "; DynamicArray a3=a; assert(a.capacity()==a3.capacity()); for(int i=0; i assert(a[i]==a3[i]); for(int i=0; i { a[i]++; assert(a[i]!=a3[i]); } cout << "Pass! "; // Object assignment test cout << " Object assignment test "; DynamicArray ob; ob=a; assert(a.capacity()==ob.capacity()); for(int i=0; i assert(a[i]==ob[i]); for(int i=0; i { a[i]++; assert(a[i]!=ob[i]); } cout << "Pass! "; return 0; }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started