Chromium Code Reviews| Index: gpu/command_buffer/build_gles2_cmd_buffer.py |
| diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py |
| index 56f59fcfde1df1d68d99ac1a6cb696033892f0fd..71a787ae43a808c9cd4e34a1dce089ccc7f5a609 100755 |
| --- a/gpu/command_buffer/build_gles2_cmd_buffer.py |
| +++ b/gpu/command_buffer/build_gles2_cmd_buffer.py |
| @@ -2638,19 +2638,28 @@ def CachedStateName(item): |
| return 'cached_' + item['name'] |
| return item['name'] |
| +def ToGLExtensionString(extension_flag): |
| + """Returns GL-type extension string of a extension flag.""" |
| + if extension_flag == "oes_compressed_etc1_rgb8_texture": |
| + return "OES_compressed_ETC1_RGB8_texture" # Fixup inconsitency with rgb8, |
| + # unfortunate. |
|
piman
2014/08/15 20:37:24
Could we do the opposite, instead of trying to rev
Kimmo Kinnunen
2014/08/20 05:59:05
Ok, I'll see what I can do. (If I understand corre
|
| + uppercase_words = [ 'img', 'ext', 'arb', 'chromium', 'oes', 'amd', 'bgra8888', |
| + 'egl', 'atc', 'etc1', 'angle'] |
| + parts = extension_flag.split('_') |
| + return "_".join( |
| + [part.upper() if part in uppercase_words else part for part in parts]) |
| + |
| +def ToCamelCase(input_string): |
| + """converts ABC_underscore_case to ABCUnderscoreCase.""" |
| + return ''.join(w[0].upper() + w[1:] for w in input_string.split('_')) |
| class CWriter(object): |
| """Writes to a file formatting it for Google's style guidelines.""" |
| def __init__(self, filename): |
| self.filename = filename |
| - self.file_num = 0 |
| self.content = [] |
| - def SetFileNum(self, num): |
| - """Used to help write number files and tests.""" |
| - self.file_num = num |
| - |
| def Write(self, string): |
| """Writes a string to a file spliting if it's > 80 characters.""" |
| lines = string.splitlines() |
| @@ -2935,7 +2944,7 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d, |
| file.Write(" if (error != error::kNoError)\n") |
| file.Write(" return error;\n") |
| - def WriteValidUnitTest(self, func, file, test, extra = {}): |
| + def WriteValidUnitTest(self, func, file, test, *extras): |
| """Writes a valid unit test for the service implementation.""" |
| if func.GetInfo('expectation') == False: |
| test = self._remove_expected_call_re.sub('', test) |
| @@ -2950,20 +2959,20 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d, |
| ] |
| gl_func_name = func.GetGLTestFunctionName() |
| vars = { |
| - 'test_name': 'GLES2DecoderTest%d' % file.file_num, |
| 'name':name, |
| 'gl_func_name': gl_func_name, |
| 'args': ", ".join(arg_strings), |
| 'gl_args': ", ".join(gl_arg_strings), |
| } |
| - vars.update(extra) |
| + for extra in extras: |
| + vars.update(extra) |
| old_test = "" |
| while (old_test != test): |
| old_test = test |
| test = test % vars |
| file.Write(test % vars) |
| - def WriteInvalidUnitTest(self, func, file, test, extra = {}): |
| + def WriteInvalidUnitTest(self, func, file, test, *extras): |
| """Writes an invalid unit test for the service implementation.""" |
| for invalid_arg_index, invalid_arg in enumerate(func.GetOriginalArgs()): |
| # Service implementation does not test constants, as they are not part of |
| @@ -2994,7 +3003,6 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d, |
| gl_error_test = '\n EXPECT_EQ(%s, GetGLError());' % gl_error |
| vars = { |
| - 'test_name': 'GLES2DecoderTest%d' % file.file_num , |
| 'name': func.name, |
| 'arg_index': invalid_arg_index, |
| 'value_index': value_index, |
| @@ -3005,10 +3013,11 @@ COMPILE_ASSERT(offsetof(%(cmd_name)s::Result, %(field_name)s) == %(offset)d, |
| 'parse_result': parse_result, |
| 'gl_error_test': gl_error_test, |
| } |
| - vars.update(extra) |
| + for extra in extras: |
| + vars.update(extra) |
| file.Write(test % vars) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Writes the service unit test for a command.""" |
| if func.name == 'Enable': |
| @@ -3044,7 +3053,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| } |
| """ |
| - self.WriteValidUnitTest(func, file, valid_test) |
| + self.WriteValidUnitTest(func, file, valid_test, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| @@ -3055,9 +3064,9 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
| } |
| """ |
| - self.WriteInvalidUnitTest(func, file, invalid_test) |
| + self.WriteInvalidUnitTest(func, file, invalid_test, *extras) |
| - def WriteImmediateServiceUnitTest(self, func, file): |
| + def WriteImmediateServiceUnitTest(self, func, file, *extras): |
| """Writes the service unit test for an immediate command.""" |
| file.Write("// TODO(gman): %s\n" % func.name) |
| @@ -3065,7 +3074,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| """Writes the validation code for an immediate version of a command.""" |
| pass |
| - def WriteBucketServiceUnitTest(self, func, file): |
| + def WriteBucketServiceUnitTest(self, func, file, *extras): |
| """Writes the service unit test for a bucket command.""" |
| file.Write("// TODO(gman): %s\n" % func.name) |
| @@ -3363,9 +3372,9 @@ class StateSetHandler(TypeHandler): |
| (func.GetGLFunctionName(), func.MakeOriginalArgString(""))) |
| file.Write(" }\n") |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| - TypeHandler.WriteServiceUnitTest(self, func, file) |
| + TypeHandler.WriteServiceUnitTest(self, func, file, *extras) |
| state_name = func.GetInfo('state') |
| state = _STATES[state_name] |
| states = state['states'] |
| @@ -3389,12 +3398,13 @@ TEST_P(%(test_name)s, %(name)sInvalidValue%(ndx)d_%(check_ndx)d) { |
| arg_strings[ndx] = range_check['test_value'] |
| vars = { |
| - 'test_name': 'GLES2DecoderTest%d' % file.file_num, |
| 'name': name, |
| 'ndx': ndx, |
| 'check_ndx': check_ndx, |
| 'args': ", ".join(arg_strings), |
| } |
| + for extra in extras: |
| + vars.update(extra) |
| file.Write(valid_test % vars) |
| if 'nan_check' in item: |
| valid_test = """ |
| @@ -3414,11 +3424,12 @@ TEST_P(%(test_name)s, %(name)sNaNValue%(ndx)d) { |
| arg_strings[ndx] = 'nanf("")' |
| vars = { |
| - 'test_name': 'GLES2DecoderTest%d' % file.file_num, |
| 'name': name, |
| 'ndx': ndx, |
| 'args': ", ".join(arg_strings), |
| } |
| + for extra in extras: |
| + vars.update(extra) |
| file.Write(valid_test % vars) |
| @@ -3566,11 +3577,11 @@ class CustomHandler(TypeHandler): |
| """Overrriden from TypeHandler.""" |
| pass |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| file.Write("// TODO(gman): %s\n\n" % func.name) |
| - def WriteImmediateServiceUnitTest(self, func, file): |
| + def WriteImmediateServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| file.Write("// TODO(gman): %s\n\n" % func.name) |
| @@ -3673,15 +3684,15 @@ class HandWrittenHandler(CustomHandler): |
| """Overrriden from TypeHandler.""" |
| pass |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| file.Write("// TODO(gman): %s\n\n" % func.name) |
| - def WriteImmediateServiceUnitTest(self, func, file): |
| + def WriteImmediateServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| file.Write("// TODO(gman): %s\n\n" % func.name) |
| - def WriteBucketServiceUnitTest(self, func, file): |
| + def WriteBucketServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| file.Write("// TODO(gman): %s\n\n" % func.name) |
| @@ -3745,11 +3756,11 @@ class ManualHandler(CustomHandler): |
| """Overrriden from TypeHandler.""" |
| pass |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| file.Write("// TODO(gman): %s\n\n" % func.name) |
| - def WriteImmediateServiceUnitTest(self, func, file): |
| + def WriteImmediateServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| file.Write("// TODO(gman): %s\n\n" % func.name) |
| @@ -3855,11 +3866,11 @@ class DataHandler(TypeHandler): |
| file.Write("// TODO(gman): Implement test for %s\n" % func.name) |
| return |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| file.Write("// TODO(gman): %s\n\n" % func.name) |
| - def WriteImmediateServiceUnitTest(self, func, file): |
| + def WriteImmediateServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| file.Write("// TODO(gman): %s\n\n" % func.name) |
| @@ -3875,7 +3886,7 @@ class BindHandler(TypeHandler): |
| def __init__(self): |
| TypeHandler.__init__(self) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| if len(func.GetOriginalArgs()) == 1: |
| @@ -3906,7 +3917,7 @@ TEST_P(%(test_name)s, %(name)sValidArgsNewId) { |
| self.WriteValidUnitTest(func, file, valid_test, { |
| 'resource_type': func.GetOriginalArgs()[0].resource_type, |
| 'gl_gen_func_name': func.GetInfo("gen_func"), |
| - }) |
| + }, *extras) |
| else: |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -3937,7 +3948,7 @@ TEST_P(%(test_name)s, %(name)sValidArgsNewId) { |
| 'first_gl_arg': func.GetOriginalArgs()[0].GetValidGLArg(func), |
| 'resource_type': func.GetOriginalArgs()[1].resource_type, |
| 'gl_gen_func_name': func.GetInfo("gen_func"), |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| @@ -3948,7 +3959,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
| } |
| """ |
| - self.WriteInvalidUnitTest(func, file, invalid_test) |
| + self.WriteInvalidUnitTest(func, file, invalid_test, *extras) |
| def WriteGLES2Implementation(self, func, file): |
| """Writes the GLES2 Implemention.""" |
| @@ -4135,7 +4146,7 @@ TEST_F(GLES2ImplementationTest, %(name)s) { |
| 'types': func.GetInfo('resource_types'), |
| }) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -4152,7 +4163,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| """ |
| self.WriteValidUnitTest(func, file, valid_test, { |
| 'resource_name': func.GetInfo('resource_type'), |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); |
| @@ -4165,9 +4176,9 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| """ |
| self.WriteValidUnitTest(func, file, invalid_test, { |
| 'resource_name': func.GetInfo('resource_type').lower(), |
| - }) |
| + }, *extras) |
| - def WriteImmediateServiceUnitTest(self, func, file): |
| + def WriteImmediateServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -4185,7 +4196,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| """ |
| self.WriteValidUnitTest(func, file, valid_test, { |
| 'resource_name': func.GetInfo('resource_type'), |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| EXPECT_CALL(*gl_, %(gl_func_name)s(_, _)).Times(0); |
| @@ -4198,7 +4209,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| """ |
| self.WriteValidUnitTest(func, file, invalid_test, { |
| 'resource_name': func.GetInfo('resource_type').lower(), |
| - }) |
| + }, *extras) |
| def WriteImmediateCmdComputeSize(self, func, file): |
| """Overrriden from TypeHandler.""" |
| @@ -4301,7 +4312,7 @@ class CreateHandler(TypeHandler): |
| """Overrriden from TypeHandler.""" |
| func.AddCmdArg(Argument("client_id", 'uint32_t')) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -4321,7 +4332,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| self.WriteValidUnitTest(func, file, valid_test, { |
| 'comma': comma, |
| 'resource_type': func.name[6:], |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s)).Times(0); |
| @@ -4333,7 +4344,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| """ |
| self.WriteInvalidUnitTest(func, file, invalid_test, { |
| 'comma': comma, |
| - }) |
| + }, *extras) |
| def WriteHandlerImplementation (self, func, file): |
| """Overrriden from TypeHandler.""" |
| @@ -4432,7 +4443,7 @@ TEST_F(GLES2ImplementationTest, %(name)s) { |
| 'types': func.GetInfo('resource_types'), |
| }) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -4453,7 +4464,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| self.WriteValidUnitTest(func, file, valid_test, { |
| 'resource_name': func.GetInfo('resource_type').lower(), |
| 'upper_resource_name': func.GetInfo('resource_type'), |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| GetSharedMemoryAs<GLuint*>()[0] = kInvalidClientId; |
| @@ -4463,9 +4474,9 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| } |
| """ |
| - self.WriteValidUnitTest(func, file, invalid_test) |
| + self.WriteValidUnitTest(func, file, invalid_test, *extras) |
| - def WriteImmediateServiceUnitTest(self, func, file): |
| + def WriteImmediateServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -4486,7 +4497,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| self.WriteValidUnitTest(func, file, valid_test, { |
| 'resource_name': func.GetInfo('resource_type').lower(), |
| 'upper_resource_name': func.GetInfo('resource_type'), |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| cmds::%(name)s& cmd = *GetImmediateAs<cmds::%(name)s>(); |
| @@ -4497,7 +4508,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| ExecuteImmediateCmd(cmd, sizeof(temp))); |
| } |
| """ |
| - self.WriteValidUnitTest(func, file, invalid_test) |
| + self.WriteValidUnitTest(func, file, invalid_test, *extras) |
| def WriteHandlerImplementation (self, func, file): |
| """Overrriden from TypeHandler.""" |
| @@ -4787,7 +4798,7 @@ TEST_F(GLES2ImplementationTest, %(name)s) { |
| 'cmd_args': ", ".join(cmd_arg_strings), |
| }) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -4824,7 +4835,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| self.WriteValidUnitTest(func, file, valid_test, { |
| 'local_gl_args': ", ".join(gl_arg_strings), |
| 'valid_pname': valid_pname, |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| @@ -4839,7 +4850,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| EXPECT_EQ(0u, result->size);%(gl_error_test)s |
| } |
| """ |
| - self.WriteInvalidUnitTest(func, file, invalid_test) |
| + self.WriteInvalidUnitTest(func, file, invalid_test, *extras) |
| class ArrayArgTypeHandler(TypeHandler): |
| """Base class for type handlers that handle args that are arrays""" |
| @@ -4871,7 +4882,7 @@ class PUTHandler(ArrayArgTypeHandler): |
| def __init__(self): |
| ArrayArgTypeHandler.__init__(self) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Writes the service unit test for a command.""" |
| expected_call = "EXPECT_CALL(*gl_, %(gl_func_name)s(%(gl_args)s));" |
| if func.GetInfo("first_element_only"): |
| @@ -4897,7 +4908,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| 'data_value': func.GetInfo('data_value') or '0', |
| 'expected_call': expected_call, |
| } |
| - self.WriteValidUnitTest(func, file, valid_test, extra) |
| + self.WriteValidUnitTest(func, file, valid_test, extra, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| @@ -4909,9 +4920,9 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| EXPECT_EQ(error::%(parse_result)s, ExecuteCmd(cmd));%(gl_error_test)s |
| } |
| """ |
| - self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
| + self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras) |
| - def WriteImmediateServiceUnitTest(self, func, file): |
| + def WriteImmediateServiceUnitTest(self, func, file, *extras): |
| """Writes the service unit test for a command.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -4941,7 +4952,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| 'gl_args': ", ".join(gl_arg_strings), |
| 'gl_any_args': ", ".join(gl_any_strings), |
| } |
| - self.WriteValidUnitTest(func, file, valid_test, extra) |
| + self.WriteValidUnitTest(func, file, valid_test, extra, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| @@ -4954,7 +4965,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s |
| } |
| """ |
| - self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
| + self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras) |
| def WriteGetDataSizeCode(self, func, file): |
| """Overrriden from TypeHandler.""" |
| @@ -5142,9 +5153,9 @@ class PUTnHandler(ArrayArgTypeHandler): |
| def __init__(self): |
| ArrayArgTypeHandler.__init__(self) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overridden from TypeHandler.""" |
| - ArrayArgTypeHandler.WriteServiceUnitTest(self, func, file) |
| + ArrayArgTypeHandler.WriteServiceUnitTest(self, func, file, *extras) |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgsCountTooLarge) { |
| @@ -5178,9 +5189,9 @@ TEST_P(%(test_name)s, %(name)sValidArgsCountTooLarge) { |
| 'gl_args': ", ".join(gl_arg_strings), |
| 'args': ", ".join(arg_strings), |
| } |
| - self.WriteValidUnitTest(func, file, valid_test, extra) |
| + self.WriteValidUnitTest(func, file, valid_test, extra, *extras) |
| - def WriteImmediateServiceUnitTest(self, func, file): |
| + def WriteImmediateServiceUnitTest(self, func, file, *extras): |
| """Overridden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -5212,7 +5223,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| 'gl_args': ", ".join(gl_arg_strings), |
| 'gl_any_args': ", ".join(gl_any_strings), |
| } |
| - self.WriteValidUnitTest(func, file, valid_test, extra) |
| + self.WriteValidUnitTest(func, file, valid_test, extra, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| @@ -5225,7 +5236,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| ExecuteImmediateCmd(cmd, sizeof(temp)));%(gl_error_test)s |
| } |
| """ |
| - self.WriteInvalidUnitTest(func, file, invalid_test, extra) |
| + self.WriteInvalidUnitTest(func, file, invalid_test, extra, *extras) |
| def WriteGetDataSizeCode(self, func, file): |
| """Overrriden from TypeHandler.""" |
| @@ -5487,7 +5498,7 @@ class PUTXnHandler(ArrayArgTypeHandler): |
| 'values': values, |
| }) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -5505,7 +5516,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| 'name': func.name, |
| 'count': self.GetArrayCount(func), |
| 'local_args': local_args, |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| @@ -5696,7 +5707,7 @@ class IsHandler(TypeHandler): |
| if func.GetInfo('result') == None: |
| func.AddInfo('result', ['uint32_t']) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -5713,7 +5724,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| comma =", " |
| self.WriteValidUnitTest(func, file, valid_test, { |
| 'comma': comma, |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| @@ -5726,7 +5737,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) { |
| """ |
| self.WriteInvalidUnitTest(func, file, invalid_test, { |
| 'comma': comma, |
| - }) |
| + }, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) { |
| @@ -5741,7 +5752,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgsBadSharedMemoryId) { |
| """ |
| self.WriteValidUnitTest(func, file, invalid_test, { |
| 'comma': comma, |
| - }) |
| + }, *extras) |
| def WriteServiceImplementation(self, func, file): |
| """Overrriden from TypeHandler.""" |
| @@ -5895,7 +5906,7 @@ class STRnHandler(TypeHandler): |
| func.WriteDestinationInitalizationValidation(file) |
| file.Write(code_2 % str_args) |
| - def WriteServiceUnitTest(self, func, file): |
| + def WriteServiceUnitTest(self, func, file, *extras): |
| """Overrriden from TypeHandler.""" |
| valid_test = """ |
| TEST_P(%(test_name)s, %(name)sValidArgs) { |
| @@ -5935,7 +5946,7 @@ TEST_P(%(test_name)s, %(name)sValidArgs) { |
| " EXPECT_CALL(*gl_, %s(%s, %s, _))\n" |
| " .WillOnce(SetArgumentPointee<2>(strlen(kInfo) + 1));") % ( |
| get_len_func[2:], id_name, get_len_enum) |
| - self.WriteValidUnitTest(func, file, valid_test, sub) |
| + self.WriteValidUnitTest(func, file, valid_test, sub, *extras) |
| invalid_test = """ |
| TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| @@ -5948,7 +5959,7 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs) { |
| EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
| } |
| """ |
| - self.WriteValidUnitTest(func, file, invalid_test) |
| + self.WriteValidUnitTest(func, file, invalid_test, *extras) |
| def WriteServiceImplementation(self, func, file): |
| """Overrriden from TypeHandler.""" |
| @@ -7000,9 +7011,9 @@ class Function(object): |
| """Writes the service implementation for a command.""" |
| self.type_handler.WriteServiceImplementation(self, file) |
| - def WriteServiceUnitTest(self, file): |
| + def WriteServiceUnitTest(self, file, *extras): |
| """Writes the service implementation for a command.""" |
| - self.type_handler.WriteServiceUnitTest(self, file) |
| + self.type_handler.WriteServiceUnitTest(self, file, *extras) |
| def WriteGLES2CLibImplementation(self, file): |
| """Writes the GLES2 C Lib Implemention.""" |
| @@ -7131,9 +7142,9 @@ class ImmediateFunction(Function): |
| """Overridden from Function""" |
| self.type_handler.WriteImmediateHandlerImplementation(self, file) |
| - def WriteServiceUnitTest(self, file): |
| + def WriteServiceUnitTest(self, file, *extras): |
| """Writes the service implementation for a command.""" |
| - self.type_handler.WriteImmediateServiceUnitTest(self, file) |
| + self.type_handler.WriteImmediateServiceUnitTest(self, file, *extras) |
| def WriteValidationCode(self, file): |
| """Overridden from Function""" |
| @@ -7211,9 +7222,9 @@ class BucketFunction(Function): |
| """Overridden from Function""" |
| self.type_handler.WriteBucketHandlerImplementation(self, file) |
| - def WriteServiceUnitTest(self, file): |
| + def WriteServiceUnitTest(self, file, *extras): |
| """Writes the service implementation for a command.""" |
| - self.type_handler.WriteBucketServiceUnitTest(self, file) |
| + self.type_handler.WriteBucketServiceUnitTest(self, file, *extras) |
| def CreateArg(arg_string): |
| @@ -7633,6 +7644,9 @@ void ContextState::InitState(const ContextState *prev_state) const { |
| file.Write(" gl%s(%s, %s);\n" % |
| (state['func'], item['enum'], item_name)) |
| else: |
| + if 'extension_flag' in state: |
| + file.Write(" if (feature_info_->feature_flags().%s)\n " % |
| + state['extension_flag']) |
| if test_prev: |
| file.Write(" if (") |
| args = [] |
| @@ -7778,19 +7792,28 @@ bool GLES2DecoderImpl::SetCapabilityState(GLenum cap, bool enabled) { |
| file = CHeaderWriter( |
| name, |
| "// It is included by gles2_cmd_decoder_unittest_%d.cc\n" % count) |
| - file.SetFileNum(count) |
| + test_name = 'GLES2DecoderTest%d' % count |
| end = test_num + FUNCTIONS_PER_FILE |
| if end > num_tests: |
| end = num_tests |
| for idx in range(test_num, end): |
| func = self.functions[idx] |
| + |
| + # Do any filtering of the functions here, so that the functions |
| + # will not move between the numbered files if filtering properties |
| + # are changed. |
| + if func.GetInfo('extension_flag'): |
| + continue |
| + |
| if True: |
| #gen_cmd = func.GetInfo('gen_cmd') |
| #if gen_cmd == True or gen_cmd == None: |
| if func.GetInfo('unit_test') == False: |
| file.Write("// TODO(gman): %s\n" % func.name) |
| else: |
| - func.WriteServiceUnitTest(file) |
| + func.WriteServiceUnitTest(file, { |
| + 'test_name': test_name |
| + }) |
| file.Close() |
| file = CHeaderWriter( |
| @@ -7828,13 +7851,20 @@ void GLES2DecoderTestBase::SetupInitStateExpectations() { |
| elif state['type'] == 'NamedParameter': |
| for item in state['states']: |
| if 'extension_flag' in item: |
| - continue |
| + file.Write(" if (group_->feature_info()->feature_flags().%s)\n" % |
| + item['extension_flag']) |
| + file.Write(" ") |
| + |
| file.Write( |
| " EXPECT_CALL(*gl_, %s(%s, %s))\n" % |
| (state['func'], item['enum'], item['default'])) |
| file.Write(" .Times(1)\n") |
| file.Write(" .RetiresOnSaturation();\n") |
| else: |
| + if 'extension_flag' in state: |
| + file.Write(" if (group_->feature_info()->feature_flags().%s)\n" % |
| + state['extension_flag']) |
| + file.Write(" ") |
| args = [] |
| for item in state['states']: |
| if 'expected' in item: |
| @@ -7849,6 +7879,29 @@ void GLES2DecoderTestBase::SetupInitStateExpectations() { |
| """) |
| file.Close() |
| + def WriteServiceUnitTestsForExtensions(self, filename): |
| + """Writes the service decorder unit tests for functions with extension_flag. |
| + |
| + The functions are special in that they need a specific unit test |
| + baseclass to turn on the extension. |
| + """ |
| + functions = [f for f in self.functions if f.GetInfo('extension_flag')] |
| + file = CHeaderWriter( |
| + filename, |
| + "// It is included by gles2_cmd_decoder_unittest_extensions.cc\n") |
| + for func in functions: |
| + if True: |
| + if func.GetInfo('unit_test') == False: |
| + file.Write("// TODO(gman): %s\n" % func.name) |
| + else: |
| + extension = ToCamelCase( |
| + ToGLExtensionString(func.GetInfo('extension_flag'))) |
| + func.WriteServiceUnitTest(file, { |
| + 'test_name': 'GLES2DecoderTestWith%s' % extension |
| + }) |
| + |
| + file.Close() |
| + |
| def WriteGLES2Header(self, filename): |
| """Writes the GLES2 header.""" |
| file = CHeaderWriter( |
| @@ -8349,6 +8402,8 @@ def main(argv): |
| gen.WriteClientContextStateImpl( |
| "client/client_context_state_impl_autogen.h") |
| gen.WriteServiceUnitTests("service/gles2_cmd_decoder_unittest_%d_autogen.h") |
| + gen.WriteServiceUnitTestsForExtensions( |
| + "service/gles2_cmd_decoder_unittest_extensions_autogen.h") |
| gen.WriteServiceUtilsHeader("service/gles2_cmd_validation_autogen.h") |
| gen.WriteServiceUtilsImplementation( |
| "service/gles2_cmd_validation_implementation_autogen.h") |