MCPcopy Create free account
hub / github.com/vispy/vispy / test_function_changed

Function test_function_changed

vispy/visuals/shaders/tests/test_function.py:317–397  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

315
316
317def test_function_changed():
318 ch = []
319
320 class C(object):
321 def _dep_changed(self, dep, **kwargs):
322 ch.append(dep)
323 ch_obj = C()
324
325 def assert_changed(*objs):
326 assert set(ch) == set(objs)
327 while ch:
328 ch.pop()
329
330 fun1 = Function('void main(){$var1; $var2;}')
331 fun1._dependents[ch_obj] = None
332 fun1['var1'] = 'x'
333 fun1['var2'] = 'y'
334 assert_changed(fun1)
335
336 fun1['var1'] = 'z'
337 assert_changed(fun1)
338
339 # same value; should result in no change events
340 fun1['var1'] = 'z'
341 assert_changed()
342
343 fun1['var1'] = 0.5
344 var1 = fun1['var1']
345 var1._dependents[ch_obj] = None
346 assert_changed(fun1)
347
348 var1.name = 'xxx'
349 assert_changed(fun1, var1)
350
351 # changing type requires code change
352 var1.value = 7
353 assert_changed(fun1, var1)
354
355 # changing value (but not type) requires no code changes
356 var1.value = 6
357 assert_changed()
358
359 # test variable disconnect
360 fun1['var1'] = Variable('var1', 7)
361 var2 = fun1['var1']
362 var2._dependents[ch_obj] = None
363 # assert_changed(fun1)
364 # var2 is now connected
365 var2.value = (1, 2, 3, 4)
366 assert_changed(fun1, var2)
367 # ..but var1 no longer triggers fun1.changed
368 assert_changed()
369 var1.value = 0.5
370 assert_changed(var1)
371
372 # test expressions
373 fun2 = Function('float fn(float x){return $var1 + x;}')
374 fun3 = Function('float fn(float x){return $var1 + x;}')

Callers

nothing calls this directly

Calls 4

FunctionClass · 0.90
VariableClass · 0.90
CClass · 0.85
assert_changedFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…