# HG changeset patch # User Frederic Bastien # Date 1209999453 14400 # Node ID 4b0859606d05037463a863e24ab05e2a46ae9750 # Parent 40476a7746e895c923b6d35efdf208d2b6eb00e7 Added test for ArrayDataSet and LookUpList diff -r 40476a7746e8 -r 4b0859606d05 test_dataset.py --- a/test_dataset.py Mon May 05 10:56:58 2008 -0400 +++ b/test_dataset.py Mon May 05 10:57:33 2008 -0400 @@ -26,6 +26,9 @@ def test_ArrayDataSet(): #don't test stream #tested only with float value + #test with y too + #test missing value + a = numpy.random.rand(10,4) print a ds = ArrayDataSet(a,{'x':slice(3),'y':3,'z':[0,2]}) @@ -36,17 +39,11 @@ assert ds[i]['y']==a[i][3] assert ds[i]['z'].all()==a[i][0:3:2].all() print "x=",ds["x"] - print "x|y" i=0 for x in ds('x','y'): assert numpy.append(x['x'],x['y']).all()==a[i].all() i+=1 -# i=0 -# for x in ds['x','y']: # don't work -# assert numpy.append(x['x'],x['y']).all()==a[i].all() -# i+=1 -# for (x,y) in (ds('x','y'),a): #don't work # haven't found a variant that work. -# assert numpy.append(x,y)==z + i=0 for x,y in ds('x','y'): assert numpy.append(x,y).all()==a[i].all() @@ -70,6 +67,14 @@ except : have_thrown = True assert have_thrown == True + + have_thrown = False + try: + ds[['h']] # h is not defined... + except : + have_thrown = True + assert have_thrown == True + assert len(ds.fields())==3 for field in ds.fields(): for field_value in field: # iterate over the values associated to that field for all the ds examples @@ -85,19 +90,29 @@ assert ds == ds.fields().examples() - #test missing value - + #ds[:n] returns a dataset with the n first examples. assert len(ds[:3])==3 i=0 for x,z in ds[:3]('x','z'): assert ds[i]['z'].all()==a[i][0:3:2].all() i+=1 + #ds[i1:i2:s]# returns a ds with the examples i1,i1+s,...i2-s. - - #ds[i]# returns an Example. - + ds[1:7:2][1] #fail??? + assert len(ds[1:7:2])==3 # should be number example 1,3 and 5 + i=0 + for x,z in ds[1:7:2]('x','z'): + assert ds[i]['z'].all()==a[i][0:3:2].all() + i+=1 + ds2=ds[1:7:2] + for i in range(len(ds2)): + print ds2[i] #ds[[i1,i2,...in]]# returns a ds with examples i1,i2,...in. - + i=0 + for x in ds[[1,2]]: + assert numpy.append(x['x'],x['y']).all()==a[i].all() + i+=1 + #ds[i1,i2,...]# should we accept???? #ds[fieldname]# an iterable over the values of the field fieldname across #the ds (the iterable is obtained by default by calling valuesVStack #over the values for individual examples). @@ -110,5 +125,53 @@ #* ds1 & ds2 & ds3 == ds.vstack([ds1,ds2,ds3]) +# for (x,y) in (ds('x','y'),a): #don't work # haven't found a variant that work. +# assert numpy.append(x,y)==z + +def test_LookupList(): + #test only the example in the doc??? + example = LookupList(['x','y','z'],[1,2,3]) + example['x'] = [1, 2, 3] # set or change a field + x, y, z = example + x = example[0] + x = example["x"] + assert example.keys()==['x','y','z'] + assert example.values()==[[1,2,3],2,3] + assert example.items()==[('x',[1,2,3]),('y',2),('z',3)] + example.append_keyval('u',0) # adds item with name 'u' and value 0 + assert len(example)==4 # number of items = 4 here + example2 = LookupList(['v','w'], ['a','b']) + example3 = LookupList(['x','y','z','u','v','w'], [[1, 2, 3],2,3,0,'a','b']) + print example3 + print example+example2 + print example+example2 + assert example+example2==example3 + have_throw=False + try: + example+example + except: + have_throw=True + assert have_throw + +def ApplyFunctionDataSet(): + raise NotImplementedError() +def CacheDataSet(): + raise NotImplementedError() +def FieldsSubsetDataSet(): + raise NotImplementedError() +def DataSetFields(): + raise NotImplementedError() +def MinibatchDataSet(): + raise NotImplementedError() +def HStackedDataSet(): + raise NotImplementedError() +def VStackedDataSet(): + raise NotImplementedError() +def ArrayFieldsDataSet(): + raise NotImplementedError() + +test_LookupList() test_ArrayDataSet() + +