<?php
namespace nur;

use nur\t\TestCase;

class cTest extends TestCase {
  function testFlatten() {
    self::assertSame([], c::flatten(null));
    self::assertSame([], c::flatten([]));
    self::assertSame(["a", "b"], c::flatten(["a", "b"]));
    self::assertSame(["a", "b"], c::flatten(["a", ["b"]]));
    self::assertSame(["a", "b"], c::flatten([["a"], "b"]));
    self::assertSame(["a", "b", "c"], c::flatten(["a", "b", "c"]));
    self::assertSame(["a", "b", "c"], c::flatten(["a", ["b", "c"]]));
    self::assertSame(["a", "b", "c"], c::flatten(["a", ["b", ["c"]]]));

    self::assertSame(["a" => ["x", "y"]], c::flatten(["a" => "x", ["a" => "y"]]));
    self::assertSame(["a" => ["x", "y"]], c::flatten([["a" => "x"], "a" => "y"]));
    self::assertSame(["a" => ["x", "y"]], c::flatten([["a" => "x"], ["a" => "y"]]));

    self::assertSame(["a" => ["x", "y"]], c::flatten(["a" => ["x", ["y"]]]));
  }

  function testFlattenQuote() {
    # flatten ne quote AUCUNE valeur, c'est la responsabilité de \nur\v\v
    self::assertSame(
      ["<a", "<b", "<c", "<d"],
      c::flatten(["<a", "<b", ["<c", "<d"]]));
    self::assertSame([
      "<a" => "x>", "<b" => ["y>"],
      "<c" => "z>", "<d" => ["t>"],
      "<e" => ["w1>" ,"w2>"],
    ], c::flatten([
      "<a" => "x>", "<b" => ["y>"],
      ["<c" => "z>", "<d" => ["t>"]],
      "<e" => "w1>", ["<e" => "w2>"],
    ]));
  }
}