diff --git a/packages/tonik_generate/lib/src/util/hash_code_generator.dart b/packages/tonik_generate/lib/src/util/hash_code_generator.dart index e882b22..be1d733 100644 --- a/packages/tonik_generate/lib/src/util/hash_code_generator.dart +++ b/packages/tonik_generate/lib/src/util/hash_code_generator.dart @@ -80,7 +80,7 @@ Method generateHashCodeMethod({ refer( 'Object', 'dart:core', - ).property('hash').call(hashArgs, {}, []).returned.statement, + ).property('hashAll').call([literalList(hashArgs)]).returned.statement, ); } diff --git a/packages/tonik_generate/test/src/model/all_of_generator_test.dart b/packages/tonik_generate/test/src/model/all_of_generator_test.dart index 4c9030e..f1875bd 100644 --- a/packages/tonik_generate/test/src/model/all_of_generator_test.dart +++ b/packages/tonik_generate/test/src/model/all_of_generator_test.dart @@ -327,7 +327,7 @@ void main() { const expectedHashCode = ''' @override int get hashCode { - return Object.hash(base, mixin); + return Object.hashAll([base, mixin]); } '''; @@ -472,7 +472,7 @@ void main() { const expectedHashCode = ''' @override int get hashCode { - return Object.hash(status, string); + return Object.hashAll([status, string]); } '''; diff --git a/packages/tonik_generate/test/src/model/class_hash_code_generator_test.dart b/packages/tonik_generate/test/src/model/class_hash_code_generator_test.dart index f3ba80b..588fda2 100644 --- a/packages/tonik_generate/test/src/model/class_hash_code_generator_test.dart +++ b/packages/tonik_generate/test/src/model/class_hash_code_generator_test.dart @@ -54,7 +54,7 @@ void main() { const expectedMethod = ''' @override - int get hashCode { return Object.hash(name, age); } + int get hashCode { return Object.hashAll([name, age]); } '''; final generatedClass = generator.generateClass(model); @@ -102,7 +102,7 @@ void main() { const expectedMethod = ''' @override - int get hashCode { return Object.hash(id, name, email, age); } + int get hashCode { return Object.hashAll([id, name, email, age]); } '''; final generatedClass = generator.generateClass(model); @@ -136,7 +136,7 @@ void main() { const expectedMethod = ''' @override - int get hashCode { return Object.hash(name, bio); } + int get hashCode { return Object.hashAll([name, bio]); } '''; final generatedClass = generator.generateClass(model); @@ -170,7 +170,7 @@ void main() { const expectedMethod = ''' @override - int get hashCode { return Object.hash(firstName, lastName); } + int get hashCode { return Object.hashAll([firstName, lastName]); } '''; final generatedClass = generator.generateClass(model); @@ -209,7 +209,7 @@ void main() { @override int get hashCode { const deepEquals = DeepCollectionEquality(); - return Object.hash(name, deepEquals.hash(tags)); + return Object.hashAll([name, deepEquals.hash(tags)]); } '''; @@ -252,7 +252,7 @@ void main() { @override int get hashCode { const deepEquals = DeepCollectionEquality(); - return Object.hash(name, deepEquals.hash(nestedList)); + return Object.hashAll([name, deepEquals.hash(nestedList)]); } '''; diff --git a/packages/tonik_generate/test/src/response/response_class_generator_test.dart b/packages/tonik_generate/test/src/response/response_class_generator_test.dart index ca46a52..ae48ec6 100644 --- a/packages/tonik_generate/test/src/response/response_class_generator_test.dart +++ b/packages/tonik_generate/test/src/response/response_class_generator_test.dart @@ -311,7 +311,7 @@ void main() { const expectedMethod = ''' @override int get hashCode { - return Object.hash(xTest, body); + return Object.hashAll([xTest, body]); } '''; @@ -361,7 +361,7 @@ void main() { const expectedMethod = ''' @override int get hashCode { - return Object.hash(xTest, body, xOther); + return Object.hashAll([xTest, body, xOther]); } '''; @@ -406,7 +406,7 @@ void main() { @override int get hashCode { const deepEquals = DeepCollectionEquality(); - return Object.hash(deepEquals.hash(xList), body); + return Object.hashAll([deepEquals.hash(xList), body]); } '''; diff --git a/packages/tonik_generate/test/src/util/hash_code_generator_test.dart b/packages/tonik_generate/test/src/util/hash_code_generator_test.dart index ade3fbd..1f773a8 100644 --- a/packages/tonik_generate/test/src/util/hash_code_generator_test.dart +++ b/packages/tonik_generate/test/src/util/hash_code_generator_test.dart @@ -95,7 +95,58 @@ void main() { @override int get hashCode { const deepEquals = DeepCollectionEquality(); - return Object.hash(id, deepEquals.hash(items), name); + return Object.hashAll([id, deepEquals.hash(items), name]); + } + '''; + + expect( + collapseWhitespace(formatMethod(method)), + contains(collapseWhitespace(expectedMethod)), + ); + }); + + test('generates hash code method for class with many properties', () { + final method = generateHashCodeMethod( + properties: List.generate( + 25, + (i) => ( + normalizedName: 'prop$i', + hasCollectionValue: i.isEven, + ), + ), + ); + + const expectedMethod = ''' + @override + int get hashCode { + const deepEquals = DeepCollectionEquality(); + return Object.hashAll([ + deepEquals.hash(prop0), + prop1, + deepEquals.hash(prop2), + prop3, + deepEquals.hash(prop4), + prop5, + deepEquals.hash(prop6), + prop7, + deepEquals.hash(prop8), + prop9, + deepEquals.hash(prop10), + prop11, + deepEquals.hash(prop12), + prop13, + deepEquals.hash(prop14), + prop15, + deepEquals.hash(prop16), + prop17, + deepEquals.hash(prop18), + prop19, + deepEquals.hash(prop20), + prop21, + deepEquals.hash(prop22), + prop23, + deepEquals.hash(prop24), + ]); } ''';