~pythonxy/pythonxy-upstream/python-pandas

« back to all changes in this revision

Viewing changes to pandas/core/tests/test_index.py

  • Committer: Wes McKinney
  • Date: 2009-08-05 03:30:16 UTC
  • Revision ID: git-v1:c6b236db73ff81007909be6406f0e484edc4a9eb
first commit with cleaned up code

git-svn-id: http://pandas.googlecode.com/svn/trunk@5 d5231056-7de3-11de-ac95-d976489f1ece

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from pandas.core.daterange import DateRange
 
2
from pandas.core.datetools import bday
 
3
from pandas.core.index import Index
 
4
from pandas.core.series import Series
 
5
from pandas.lib.tseries import map_indices
 
6
from copy import deepcopy
 
7
from datetime import datetime
 
8
from numpy import isnan, array, NaN, alltrue
 
9
from numpy import random
 
10
from random import choice
 
11
import numpy as np
 
12
import os
 
13
import pickle
 
14
import string
 
15
import sys
 
16
import unittest
 
17
 
 
18
def rands(n):
 
19
    return ''.join([choice(string.letters + string.digits) for i in range(n)])
 
20
def equalContents(arr1, arr2):
 
21
    """Checks if the set of unique elements of arr1 and arr2 are equivalent.
 
22
    """
 
23
    return frozenset(arr1) == frozenset(arr2)
 
24
 
 
25
class TestIndex(unittest.TestCase):
 
26
    def setUp(self):
 
27
        self.strIndex = Index([rands(10) for i in range(50)])
 
28
        self.dateIndex = DateRange(datetime(2008,4,22), periods=50, offset=bday)
 
29
        self.intIndex = Index(np.arange(50))
 
30
        
 
31
    def testSlice(self):
 
32
        strSlice = self.strIndex[10:20]
 
33
        dateSlice = self.dateIndex[10:20]
 
34
        intSlice = self.intIndex[10:20]
 
35
        strMap = map_indices(array(strSlice))
 
36
        dateMap = map_indices(array(dateSlice))
 
37
        intMap = map_indices(array(intSlice))
 
38
        for key, value in strMap.iteritems():
 
39
            self.assert_(strSlice.indexMap[key] == value)
 
40
        for key, value in dateMap.iteritems():
 
41
            self.assert_(dateSlice.indexMap[key] == value)        
 
42
        for key, value in intMap.iteritems():
 
43
            self.assert_(intSlice.indexMap[key] == value)        
 
44
    
 
45
    def testGetItem(self):
 
46
        sl = self.strIndex[[1,2,3]]
 
47
        for i in sl:
 
48
            self.assertEqual(i, sl[sl.indexMap[i]])
 
49
        boolIdx = np.repeat(True, len(self.strIndex)).astype(bool)
 
50
        boolIdx[5:30:2] = False
 
51
        subIndex = self.strIndex[boolIdx]
 
52
        strMap = map_indices(subIndex)
 
53
        for key, value in strMap.iteritems():
 
54
            self.assert_(subIndex.indexMap[key] == value)
 
55
        
 
56
    def testAdd(self):
 
57
        firstCat = self.strIndex + self.dateIndex
 
58
        secondCat = self.strIndex + self.strIndex
 
59
        self.assert_(equalContents(np.append(self.strIndex, self.dateIndex), firstCat))
 
60
        self.assert_(equalContents(secondCat, self.strIndex))
 
61
        for key in self.strIndex:
 
62
            self.assert_(key in firstCat.indexMap)
 
63
            self.assert_(key in secondCat.indexMap)
 
64
        for key in self.dateIndex:
 
65
            self.assert_(key in firstCat.indexMap)
 
66
            
 
67
    def testContains(self):
 
68
        self.assert_(self.strIndex[10] in self.strIndex)
 
69
        self.assert_(self.dateIndex[10] in self.dateIndex)
 
70
        self.assert_(self.intIndex[10] in self.intIndex)
 
71
        strSlice = self.strIndex[10:20]
 
72
        dateSlice = self.dateIndex[10:20]
 
73
        intSlice = self.intIndex[10:20]
 
74
        self.assert_(self.strIndex[9] not in strSlice)
 
75
        self.assert_(self.dateIndex[9] not in dateSlice)
 
76
        self.assert_(self.intIndex[9] not in intSlice)
 
77
    
 
78
    def testMutability(self):
 
79
        self.assertRaises(Exception, self.strIndex.__setitem__, 5, 0)
 
80
        self.assertRaises(Exception, self.strIndex.__setitem__, slice(1,5), 0)
 
81
    
 
82
    def testPickle(self):
 
83
        f = open('tmp', 'wb')
 
84
        pickle.dump(self.strIndex, f)
 
85
        f.close()
 
86
        f = open('tmp', 'rb')
 
87
        unPickled = pickle.load(f)
 
88
        f.close()
 
89
        os.remove('tmp')
 
90
        self.assert_(isinstance(unPickled, Index))
 
91
        self.assert_(equalContents(unPickled, self.strIndex))
 
92
        for k, v in self.strIndex.indexMap.iteritems():
 
93
            self.assert_(k in unPickled.indexMap)
 
94
            self.assertEqual(unPickled.indexMap[k], v)