# Copyright (c) 2012, 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.

# This file contains the tests that have been identified as broken and have been filed
# on the co19 issue tracker.
# In order to qualify here these tests need to fail both on the VM and dart2js.

### GENERAL FAILURES ###

[ $runtime == vm || $runtime != vm ]
# Tests that fail everywhere, including the analyzer.
LibTest/core/RegExp/firstMatch_A01_t01: Fail, OK # Issue 635
LibTest/core/Stopwatch/start_A01_t01: PASS, FAIL, OK # co19 issue 657
LibTest/core/Stopwatch/start_A01_t02: PASS, FAIL, OK # co19 issue 657
LibTest/core/Stopwatch/elapsedTicks_A01_t01: PASS, FAIL, OK # co19 issue 657

LibTest/isolate/Isolate/spawnFunction_A02_t01: Fail, OK # co19 issue 639
LibTest/isolate/Isolate/spawnFunction_A03_t01: Fail, OK # co19 issue 639
LibTest/isolate/Isolate/spawnFunction_A04_t01: Fail, OK # co19 issue 639
LibTest/isolate/Isolate/spawnFunction_A04_t02: Fail, OK # co19 issue 639
LibTest/isolate/Isolate/spawnFunction_A04_t03: Fail, OK # co19 issue 639

[ $runtime == vm || $runtime == dartium || $compiler == dart2dart || $compiler == dart2js ]
Language/12_Expressions/30_Identifier_Reference_A02_t01: fail, pass, ok # co19 issue 649

Language/05_Variables/05_Variables_A06_t01: fail, pass, ok # co19 issue 624
Language/05_Variables/05_Variables_A06_t02: fail, pass, ok # co19 issue 624
Language/05_Variables/05_Variables_A06_t03: fail, pass, ok # co19 issue 624
Language/07_Classes/6_Constructors/1_Generative_Constructors_A12_t02: fail # co19-roll r587: Please triage this failure
Language/07_Classes/6_Constructors/1_Generative_Constructors_A20_t02: fail # co19-roll r587: Please triage this failure

LibTest/collection/LinkedList/forEach_A02_t01: RuntimeError, OK # co19 issue 662

LibTest/core/Invocation/namedArguments_A01_t01: RuntimeError # co19-roll r607: Please triage this failure
LibTest/core/Symbol/Symbol_A01_t04: RuntimeError # co19-roll r607: Please triage this failure
LibTest/core/Set/intersection_A02_t01: Fail, OK # Issue 659

Language/07_Classes/07_Classes_A13_t01: Pass, MissingCompileTimeError, Fail # co19-roll r623: Please triage this failure
Language/07_Classes/07_Classes_A13_t04: Pass, MissingCompileTimeError, Fail # co19-roll r623: Please triage this failure
Language/07_Classes/07_Classes_A13_t07: Pass, MissingCompileTimeError, Fail # co19-roll r623: Please triage this failure

LibTest/collection/HashSet/HashSet_class_A01_t01: RuntimeError, OK # co19 issue 663
LibTest/collection/LinkedHashSet/LinkedHashSet_class_A01_t01: RuntimeError, OK # co19 issue 663
LibTest/core/Set/IterableBase_A01_t01: RuntimeError, OK # co19 issue 663

LibTest/core/Uri/toFilePath_A01_t01: pass, fail, ok # co19 Issue 592

LibTest/collection/ListBase/ListBase_class_A01_t01: Skip, OK # co19 issue 661
LibTest/collection/ListMixin/ListMixin_class_A01_t01: Skip, OK # co19 issue 661

LibTest/isolate/Isolate/spawnUri_A02_t04: Timeout, Fail # co19-roll r672: Please triage this failure

[ $runtime == vm || $runtime == dartium || $compiler == dart2js ]
LibTest/math/acos_A01_t01: PASS, FAIL, OK # co19 issue 44
LibTest/math/asin_A01_t01: PASS, FAIL, OK # co19 issue 44
LibTest/math/atan_A01_t01: PASS, FAIL, OK # co19 issue 44

LibTest/math/cos_A01_t01: PASS, FAIL, OK # co19 issue 44
LibTest/math/tan_A01_t01: PASS, FAIL, OK  # co19 issue 44

LibTest/core/double/ceil_A01_t03: FAIL, OK # co19 issue 389
LibTest/core/double/ceil_A01_t04: FAIL, OK # co19 issue 389
LibTest/core/double/floor_A01_t03: FAIL, OK # co19 issue 389
LibTest/core/double/floor_A01_t04: FAIL, OK # co19 issue 389
LibTest/core/double/round_A01_t02: FAIL, OK # co19 issue 389
LibTest/core/double/round_A01_t04: FAIL, OK # co19 issue 389

LibTest/async/Stream/Stream.periodic_A01_t01: TIMEOUT, PASS, FAIL, OK # co19 issue 538

LibTest/isolate/SendPort/send_A02_t02: SKIP # co19 issue 493
LibTest/isolate/SendPort/send_A02_t03: SKIP # co19 issue 495


[ $runtime == vm || $compiler == dart2js ]
Language/07_Classes/6_Constructors_A02_t01: SKIP # co19 issue 415.
Language/14_Libraries_and_Scripts/1_Imports_A03_t65: PASS, FAIL, OK # co19 issue 560

LibTest/math/exp_A01_t01: PASS, FAIL, OK # co19 issue 44
LibTest/math/sin_A01_t01: PASS, FAIL, OK # co19 issue 44

LibTest/async/Stream/Stream.periodic_A03_t01: PASS, FAIL, OK # co19 issue 538
LibTest/async/Timer/run_A01_t01: PASS, FAIL, OK # co19 issue 538
LibTest/async/Timer/Timer_A01_t01: PASS, FAIL, OK # co19 issue 538
LibTest/async/Timer/Timer_A02_t01: PASS, FAIL, OK # co19 issue 538
LibTest/async/Timer/Timer.periodic_A01_t01: PASS, FAIL, OK # co19 issue 537
LibTest/async/Timer/Timer.periodic_A02_t01: PASS, FAIL, OK # co19 issue 538
LibTest/async/Future/Future.delayed_A01_t02: PASS, FAIL, OK # co19 issue 536

LibTest/isolate/IsolateStream/contains_A02_t01: PASS, FAIL, OK # co19 issue 540


[ $runtime == vm || $compiler == none || $compiler == dart2js ]
LibTest/isolate/IsolateStream/any_A01_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/asBroadcastStream_A01_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/contains_A01_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/first_A01_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/first_A02_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/first_A02_t02: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/isBroadcast_A01_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/isBroadcast_A01_t02: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/isEmpty_A01_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/last_A01_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/last_A02_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/length_A01_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/single_A01_t01: Fail # Co19 issue 639
LibTest/isolate/IsolateStream/single_A02_t01: Fail # Co19 issue 639
LibTest/isolate/ReceivePort/close_A01_t01: Fail # Co19 issue 639
LibTest/isolate/ReceivePort/close_A02_t01: Fail # Co19 issue 639
LibTest/isolate/ReceivePort/receive_A01_t01: Fail # Co19 issue 639
LibTest/isolate/ReceivePort/receive_A01_t03: Fail # Co19 issue 639
LibTest/isolate/ReceivePort/toSendPort_A01_t01: Fail # Co19 issue 639
LibTest/isolate/ReceivePort/toSendPort_A01_t03: Fail # Co19 issue 639
LibTest/isolate/SendPort/call_A01_t01: Fail # Co19 issue 639
LibTest/isolate/SendPort/hashCode_A01_t01: Fail # Co19 issue 639
LibTest/isolate/SendPort/operator_equality_A01_t01: Fail # Co19 issue 639
LibTest/isolate/SendPort/send_A01_t01: Pass
LibTest/isolate/SendPort/send_A02_t01: Fail # Co19 issue 639
LibTest/isolate/SendPort/send_A02_t04: Fail # Co19 issue 639
LibTest/isolate/SendPort/send_A02_t05: Fail # Co19 issue 639
LibTest/isolate/SendPort/send_A02_t06: Fail # Co19 issue 639
LibTest/isolate/SendPort/send_A03_t01: Fail # Co19 issue 639
LibTest/isolate/SendPort/send_A03_t02: Fail # Co19 issue 639

Language/14_Libraries_and_Scripts/4_Scripts_A03_t03: MissingRuntimeError, OK # co19 issue 638


### CHECKED MODE FAILURES ###

[ ($runtime == vm || $runtime == dartium || $compiler == dart2js) && $checked]
Language/13_Statements/09_Switch_A09_t01: PASS, FAIL, OK # co19 issue 633
LibTest/collection/DoubleLinkedQueue/removeFirst_A01_t01: RuntimeError # co19-roll r607: Please triage this failure
LibTest/collection/LinkedList/LinkedList_A01_t01: RuntimeError # co19-roll r623: Please triage this failure

[ ($runtime == vm || $compiler == dart2js) && $checked]
Language/14_Libraries_and_Scripts/1_Imports_A03_t46: PASS, FAIL, OK # co19 issue 560
Language/14_Libraries_and_Scripts/1_Imports_A03_t66: PASS, FAIL, OK # co19 issue 560
