// Copyright (c) 2013, 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 "package:expect/expect.dart"; | |

class S {} | |

class M1 {} | |

class M2 {} | |

class C = S with M1; | |

class D = S with M1, M2; | |

class E = S with M2, M1; | |

class F extends E {} | |

class C_ = S with M1; | |

class D_ = S with M1, M2; | |

class E_ = S with M2, M1; | |

class F_ extends E_ {} | |

main() { | |

var c = new C(); | |

Expect.isTrue(c is C); | |

Expect.isFalse(c is D); | |

Expect.isFalse(c is E); | |

Expect.isFalse(c is F); | |

Expect.isTrue(c is S); | |

Expect.isTrue(c is M1); | |

Expect.isFalse(c is M2); | |

var d = new D(); | |

Expect.isFalse(d is C); | |

Expect.isTrue(d is D); | |

Expect.isFalse(d is E); | |

Expect.isFalse(d is F); | |

Expect.isTrue(d is S); | |

Expect.isTrue(d is M1); | |

Expect.isTrue(d is M2); | |

var e = new E(); | |

Expect.isFalse(e is C); | |

Expect.isFalse(e is D); | |

Expect.isTrue(e is E); | |

Expect.isFalse(e is F); | |

Expect.isTrue(e is S); | |

Expect.isTrue(e is M1); | |

Expect.isTrue(e is M2); | |

var f = new F(); | |

Expect.isFalse(f is C); | |

Expect.isFalse(f is D); | |

Expect.isTrue(f is E); | |

Expect.isTrue(f is F); | |

Expect.isTrue(f is S); | |

Expect.isTrue(f is M1); | |

Expect.isTrue(f is M2); | |

// Make sure we get a new class for each mixin | |

// application (at least the named ones). | |

Expect.isFalse(c is C_); | |

Expect.isFalse(c is D_); | |

Expect.isFalse(c is E_); | |

Expect.isFalse(c is F_); | |

Expect.isFalse(d is C_); | |

Expect.isFalse(d is D_); | |

Expect.isFalse(d is E_); | |

Expect.isFalse(d is F_); | |

Expect.isFalse(e is C_); | |

Expect.isFalse(e is D_); | |

Expect.isFalse(e is E_); | |

Expect.isFalse(e is F_); | |

Expect.isFalse(f is C_); | |

Expect.isFalse(f is D_); | |

Expect.isFalse(f is E_); | |

Expect.isFalse(f is F_); | |

} |