Exemplo n.º 1
0
    def testUseUsesTheShaderProgram(self, mockGl):
        program = ShaderProgram()
        program.getLinkStatus = lambda: True
        
        program.use()

        self.assertEquals(mockGl.glUseProgram.call_args, ((program.id,), {}))
Exemplo n.º 2
0
 def testUseRaisesOnLinkFailure(self):
     program = ShaderProgram()
     program.getLinkStatus = lambda: False
     program.getInfoLog = lambda: 'linkerror'
     try:
         program.use()
         self.fail('should raise')
     except LinkError, e:
         self.assertTrue('linkerror' in str(e))
Exemplo n.º 3
0
    def testUseCreatesProgram(self, mockGl):
        mockGl.glCreateProgram.return_value = 123
        program = ShaderProgram()
        program.getLinkStatus = lambda: True
        
        program.use()

        self.assertTrue(mockGl.glCreateProgram.called)
        self.assertEquals(program.id, 123)
Exemplo n.º 4
0
    def testUseReturnsConcatenatedMessages(self):
        shader1 = Mock()
        shader2 = Mock()
        shader1.getInfoLog = lambda: 's1'
        shader2.getInfoLog = lambda: 's2'
        program = ShaderProgram(shader1, shader2)
        program.getInfoLog = lambda: 'p0'
        program.getLinkStatus = lambda: True

        message = program.use()

        self.assertEquals(message, 's1\ns2\np0')
Exemplo n.º 5
0
    def testGetLinkStatus(self):
        data = [
            (gl.GL_TRUE, True),
            (gl.GL_FALSE, False),
        ]
        for getReturn, expected in data:
            program = ShaderProgram()
            program._get = Mock(return_value=getReturn)

            actual = program.getLinkStatus()

            self.assertEquals(program._get.call_args,
                ((gl.GL_LINK_STATUS,), {}))
            self.assertEquals(actual, expected)
            self.assertEquals(type(actual), type(expected))
Exemplo n.º 6
0
    def testUseCompilesAndAttachesShaders(self, mockGl):
        shader1 = Mock()
        shader2 = Mock()
        program = ShaderProgram(shader1, shader2)
        program.id = 123
        program._getMessage = DoNothing
        program.getLinkStatus = lambda: True
        
        program.use()

        self.assertEquals(shader1.compile.call_args, (tuple(), {}))
        self.assertEquals(shader2.compile.call_args, (tuple(), {}))
        self.assertEquals(mockGl.glAttachShader.call_args_list, [
            ((program.id, shader1.id), {}),
            ((program.id, shader2.id), {}),
        ])