|  | // Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import 'duplicate_code_finder_experiment.dart'; | 
|  |  | 
|  | void main() { | 
|  | exactlySameLine(); | 
|  | sameLineDifferentIndentation(); | 
|  | } | 
|  |  | 
|  | Uri testUri = Uri.parse("test://uri.dart"); | 
|  |  | 
|  | void exactlySameLine() { | 
|  | // Can find exactly the same lines. | 
|  | List<Duplicate> result = findDuplicates({ | 
|  | testUri: """ | 
|  | if (whatever()) { | 
|  | Foo f = new Foo(); | 
|  | f.partA(); | 
|  | f.partB(); | 
|  | f.partC(); | 
|  | } else { | 
|  | print("Else case"); | 
|  | Foo f = new Foo(); | 
|  | f.partA(); | 
|  | f.partB(); | 
|  | f.partC(); | 
|  | } | 
|  | """, | 
|  | }); | 
|  | if (result.length != 1) throw "Didn't find exactly 1 result; got $result"; | 
|  | String s = result.single.toString(); | 
|  | if (!s.contains("Foo f = new Foo ( ) ;") || | 
|  | !s.contains("f . partA ( ) ;") || | 
|  | !s.contains("f . partB ( ) ;") || | 
|  | !s.contains("f . partC ( ) ;")) { | 
|  | throw "Didn't contain expected, was $s"; | 
|  | } | 
|  | } | 
|  |  | 
|  | void sameLineDifferentIndentation() { | 
|  | // Can find exactly the same lines. | 
|  | List<Duplicate> result = findDuplicates({ | 
|  | testUri: """ | 
|  | if (whatever()) { | 
|  | Foo f = new Foo(); | 
|  | f.partA(); | 
|  | f.partB(); | 
|  | f.partC(); | 
|  | } else { | 
|  | if (something()) { | 
|  | print("Else case with something"); | 
|  | } else { | 
|  | Foo f = new Foo(); | 
|  | f.partA(); | 
|  | f.partB(); | 
|  | f.partC(); | 
|  | } | 
|  | } | 
|  | """, | 
|  | }); | 
|  | if (result.length != 1) throw "Didn't find exactly 1 result; got $result"; | 
|  | String s = result.single.toString(); | 
|  | if (!s.contains("Foo f = new Foo ( ) ;") || | 
|  | !s.contains("f . partA ( ) ;") || | 
|  | !s.contains("f . partB ( ) ;") || | 
|  | !s.contains("f . partC ( ) ;")) { | 
|  | throw "Didn't contain expected, was $s"; | 
|  | } | 
|  | } |