// Copyright (c) 2017, 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 'dart:convert';
/// @assertion Codec<S, R> fuse<R>(Codec<T, R> other)
///  Fuses this with other.
///  When encoding, the resulting codec encodes with this before encoding with 
/// other.
///  When decoding, the resulting codec decodes with other before decoding with 
/// this.
///  In some cases one needs to use the inverted codecs to be able to fuse them 
/// correctly. That is, the output type of this (T) must match the input type of 
/// the second codec other.
/// @description Checks that [fuse] return codec composed of this and [other]
/// and decoder
/// @author a.semenov@unipro.ru

import "dart:io";
import "../../../Utils/expect.dart";

main() {
  const SystemEncoding systemEncoding = const SystemEncoding();
  Codec<List<int>, String> inverted = systemEncoding.inverted;
  Codec fuse = systemEncoding.fuse(inverted);
  Expect.equals("abcd", fuse.encode("abcd"));
  Expect.equals("abcd", fuse.decode("abcd"));
}
