This file is indexed.

/usr/lib/python2.7/dist-packages/woo/tests/labels.py is in python-woo 1.0+dfsg1-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# encoding: utf-8
# 2013 © Václav Šmilauer <eu@doxos.eu>

import unittest
from minieigen import *
import woo._customConverters
import woo.core
import woo.dem

class TestSceneLabels(unittest.TestCase):
	'Test :obj:`LabelMapper` and related functionality.'
	def setUp(self):
		self.S=woo.core.Scene(fields=[woo.dem.DemField()])
	def testAccess(self):
		'LabelMapper: access'
		self.S.labels['abc']=123
		self.assert_(self.S.lab.abc==123)
		self.assert_(self.S.labels._whereIs('abc')==woo.core.LabelMapper.inPy)
		self.S.lab.ghi=456
		self.assert_(self.S.labels['ghi']==456)
	def testDel(self):
		'LabelMapper: delete'
		self.S.labels['foo']=123
		self.assert_(self.S.lab.foo==123)
		del self.S.lab.foo
		self.assert_(self.S.labels._whereIs('foo')==woo.core.LabelMapper.nowhere)
	def testSeq(self):
		'LabelMapper: sequences'
		o1,o2,o3=woo.core.Object(),woo.core.Object(),woo.core.Object()
		# from list
		self.S.lab.objs=[None,o1,o2,o3]
		self.assert_(self.S.lab.objs[1]==o1)
		self.assert_(self.S.labels._whereIs('objs')==woo.core.LabelMapper.inWooSeq)
		# from tuple
		self.S.lab.objs2=(None,o1,o2,o3)
		self.assert_(self.S.lab.objs2[1]==o1)
		self.assert_(self.S.labels._whereIs('objs2')==woo.core.LabelMapper.inWooSeq)
		# from indexed label
		self.S.labels['objs3[2]']=o2
		self.assert_(self.S.lab.objs3[0]==None)
		self.assert_(self.S.lab.objs3[2]==o2)
		self.assert_(len(self.S.lab.objs3)==3)
	def testMixedSeq(self):
		'LabelMapper: mixed sequences rejected, undertermined accepted'
		# mixed sequences
		o1,o2=woo.core.Object(),woo.core.Object()
		self.assertRaises(ValueError,lambda: setattr(self.S.lab,'ll',[o1,o2,12]))
		self.assertRaises(ValueError,lambda: setattr(self.S.lab,'ll',(12,23,o1)))
		# undetermined sequences are sequences of woo.core.Object
		try: self.S.lab.ll1=[]
		except: self.fail("[] rejected by LabelMapper.")
		try: self.S.lab.ll2=()
		except: self.fail("() rejected by LabelMapper.")
		try: self.S.lab.ll3=[None,None]
		except: self.fail("[None,None] rejected by LabelMapper.")
		# this is legitimate
		try: self.S.lab.mm=[o1,None]
		except: self.fail("[woo.Object,None] rejected by LabelMapper as mixed.")
		try: setattr(self.S.lab,'ll4[0]',[])
		except: self.fail("[] rejected in indexed label.")
		self.assert_(self.S.labels._whereIs('mm')==woo.core.LabelMapper.inWooSeq)
		# this as well
		try: self.S.lab.nn=[231,None]
		except: self.fail("[python-object,None] rejected by LabelMapper as mixed.")
		self.assert_(self.S.labels._whereIs('nn')==woo.core.LabelMapper.inPy)
	def testShared(self):
		'LabelMapper: shared objects'
		o1=woo.core.Object()
		self.S.engines=[woo.core.PyRunner()]
		self.S.lab.someEngine=self.S.engines[0]
		self.assert_(self.S.labels._whereIs('someEngine')==woo.core.LabelMapper.inWoo)
		S2=self.S.deepcopy()
		self.assert_(S2.lab.someEngine==S2.engines[0])
	def testAutoLabel(self):
		'LabelMapper: labeled engines are added automatically'
		ee=woo.core.PyRunner(label='abc')
		self.S.engines=[ee]
		self.assert_(self.S.lab.abc==ee)
		self.assert_(self.S.labels._whereIs('abc')==woo.core.LabelMapper.inWoo)
	def testPseudoModules(self):
		'LabelMapper: pseudo-modules'
		S=self.S
		# using name which does not exist yet
		self.assertRaises(AttributeError,lambda: S.lab.abc)
		# using name which does not exist yet as pseudo-module
		self.assertRaises(NameError,lambda: setattr(S.lab,'abc.defg',1))
		S.lab._newModule('abc')
		self.assert_(S.lab._whereIs('abc')==woo.core.LabelMapper.inMod)
		S.lab.abc.a1=1
		# fail using method on proxyed pseudo-module
		self.assertRaises(AttributeError, lambda: S.lab.abc._newModule('a1')) 
		#self.assertRaises(ValueError, lambda: S.lab._newModule('abc.a1'))
		# fail when recreating existing module
		self.assertRaises(ValueError, lambda: S.lab._newModule('abc'))
		# nested
		S.lab._newModule('foo.bar')
		self.assert_(S.lab._whereIs('foo')==woo.core.LabelMapper.inMod)
		#self.assert_(S.lab._whereIs('foo.bar')==woo.core.LabelMapper.inMod)
		S.lab.foo.bar.bb=1
		self.assert_(S.lab.foo.bar.bb==1)
		# this should not raise any exception
		S.labels['foo.bar.baz[0]']=1
	def testWritable(self):
		self.S.lab.if_overwriting_this_causes_warning_it_is_a_bug=3
		self.S.lab._setWritable('if_overwriting_this_causes_warning_it_is_a_bug')
		# should not emit warning
		self.S.lab.if_overwriting_this_causes_warning_it_is_a_bug=4
	def testDir(self):
		'LabelMapper: __dir__'
		S=self.S
		S.lab._newModule('foo')
		S.lab.foo.bar=1
		self.assert_('bar' in S.lab.foo.__dir__())
	def testHasattr(self):
		'LabelMapper: __hasattr__'
		S=self.S
		S.lab._newModule('foo')
		S.lab.foo.bar=1
		S.lab.foo2=1
		self.assert_(hasattr(S.lab.foo,'bar'))
		self.assert_(hasattr(S.lab,'foo2'))
	def testGetattrIndexed(self):
		'LabelMapper: getattr with index'
		S=self.S
		S.engines=[woo.core.PyRunner(label='ee[1]'),woo.core.PyRunner(label='ee[2]')]
		self.assert_(getattr(S.lab,'ee[0]')==None)
		self.assert_(getattr(S.lab,'ee[1]')==S.engines[0])
		self.assert_(getattr(S.lab,'ee[2]')==S.engines[1])
	def testEngineLabels(self):
		'LabelMapper: engine/functor labels (mix of older tests)'
		S=self.S
		self.assertRaises(NameError,lambda: setattr(S,'engines',[woo.core.PyRunner(label='this is not a valid identifier name')]))
		#self.assertRaises(NameError,lambda: setattr(S,'engines',[PyRunner(label='foo'),PyRunner(label='foo[1]')]))
		cloop=woo.dem.ContactLoop([woo.dem.Cg2_Facet_Sphere_L6Geom(label='cg2fs'),woo.dem.Cg2_Sphere_Sphere_L6Geom(label='cg2ss')],[woo.dem.Cp2_FrictMat_FrictPhys(label='cp2ff')],[woo.dem.Law2_L6Geom_FrictPhys_IdealElPl(label='law2elpl')],)
		S.engines=[woo.core.PyRunner(label='foo'),woo.core.PyRunner(label='bar[2]'),woo.core.PyRunner(label='bar [0]'),cloop]
		# print S.lab.bar,type(S.lab.bar)
		self.assert_(hasattr(type(S.lab.bar),'__len__'))
		self.assert_(S.lab.foo==S.engines[0])
		self.assert_(S.lab.bar[0]==S.engines[2])
		self.assert_(S.lab.bar[1]==None)
		self.assert_(S.lab.bar[2]==S.engines[1])
		self.assert_(type(S.lab.cg2fs)==woo.dem.Cg2_Facet_Sphere_L6Geom)