def test_instance_attribute(): iattr = InstanceAttribute('type_array', dim='atom', dtype='str') eq_(iattr.size, 0) # Now we initialize as empty iattr.empty(10) eq_(iattr.size, 10) # We get another one iattr = InstanceAttribute('type_array', dim='atom', dtype='str') iattr.value = ['A', 'B', 'C', 'D'] # Automatic casting ok_(isinstance(iattr.value, np.ndarray)) assert_npequal(iattr.value, ['A', 'B', 'C', 'D']) # Reordering iattr2 = iattr.reorder([1, 0, 3, 2], inplace=False) assert_npequal(iattr2.value, ['B', 'A', 'D', 'C']) iattr.reorder([1, 0, 3, 2]) assert_npequal(iattr.value, ['B', 'A', 'D', 'C']) # Reordering with wrong input raises ValueError assert_raises(ValueError, iattr.reorder, [1, 2]) assert_raises(ValueError, iattr.reorder, [0, 1, 2, 100]) # Test Copy iattr = InstanceAttribute('type_array', dim='atom', dtype='str') iattr.empty(3) iattr.value = ['O', 'H', 'H'] iattr2 = iattr.copy() assert_npequal(iattr2.value, iattr.value) iattr2.value = ['A', 'B', 'C'] assert_npequal(iattr.value, ['O', 'H', 'H']) assert_npequal(iattr2.value, ['A', 'B', 'C']) iattr = InstanceAttribute('type_array', dim='atom', dtype='str') iattr.empty(3) iattr.value = ['O', 'H', 'H'] iattr1 = iattr.sub([0, 1]) assert_npequal(iattr1.value, ['O', 'H']) iattr1 = iattr.sub([False, True, False]) assert_npequal(iattr1.value, ['H'])