108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\mapper\base\capacitor;
 | 
						|
 | 
						|
use PHPUnit\Framework\TestCase;
 | 
						|
 | 
						|
class CapacitorTest extends TestCase {
 | 
						|
  function testPk() {
 | 
						|
    $c = new Capacitor();
 | 
						|
    $c->setKeys(["id" => true]);
 | 
						|
    $c->charge(["id" => 1, "title" => "first"]);
 | 
						|
    $c->charge(["id" => 1, "title" => "first (doublon)"]);
 | 
						|
    self::assertSame([
 | 
						|
      "1" => ["id" => 1, "title" => "first (doublon)"],
 | 
						|
    ], $c->discharge());
 | 
						|
  }
 | 
						|
 | 
						|
  function testSortSeq() {
 | 
						|
    $items = [
 | 
						|
      ["second", 4, 2, 1],
 | 
						|
      ["hello", 1, 1, 4],
 | 
						|
      ["first", 3, 1, 2],
 | 
						|
      ["world", 2, 2, 3],
 | 
						|
    ];
 | 
						|
    $c = new Capacitor();
 | 
						|
    foreach ($items as $item) {
 | 
						|
      $c->charge($item);
 | 
						|
    }
 | 
						|
 | 
						|
    $c->sort([1]);
 | 
						|
    self::assertSame([
 | 
						|
      ["hello", 1, 1, 4],
 | 
						|
      ["world", 2, 2, 3],
 | 
						|
      ["first", 3, 1, 2],
 | 
						|
      ["second", 4, 2, 1],
 | 
						|
    ], $c->discharge(null, false));
 | 
						|
 | 
						|
    $c->sort([2]);
 | 
						|
    self::assertSame([
 | 
						|
      ["hello", 1, 1, 4],
 | 
						|
      ["first", 3, 1, 2],
 | 
						|
      ["world", 2, 2, 3],
 | 
						|
      ["second", 4, 2, 1],
 | 
						|
    ], $c->discharge(null, false));
 | 
						|
 | 
						|
    $c->sort([3]);
 | 
						|
    self::assertSame([
 | 
						|
      ["second", 4, 2, 1],
 | 
						|
      ["first", 3, 1, 2],
 | 
						|
      ["world", 2, 2, 3],
 | 
						|
      ["hello", 1, 1, 4],
 | 
						|
    ], $c->discharge(null, false));
 | 
						|
 | 
						|
    $c->sort([2, 3]);
 | 
						|
    self::assertSame([
 | 
						|
      ["first", 3, 1, 2],
 | 
						|
      ["hello", 1, 1, 4],
 | 
						|
      ["second", 4, 2, 1],
 | 
						|
      ["world", 2, 2, 3],
 | 
						|
    ], $c->discharge(null, false));
 | 
						|
  }
 | 
						|
 | 
						|
  function testSortAssoc() {
 | 
						|
    $items = [
 | 
						|
      ["hello", 1, 1, 4],
 | 
						|
      ["world", 2, 2, 3],
 | 
						|
      ["first", 3, 1, 2],
 | 
						|
      ["second", 4, 2, 1],
 | 
						|
    ];
 | 
						|
    $c = new Capacitor();
 | 
						|
    $c->setKeys([[0, true]]);
 | 
						|
    foreach ($items as $item) {
 | 
						|
      $c->charge($item);
 | 
						|
    }
 | 
						|
 | 
						|
    $c->sort([1]);
 | 
						|
    self::assertSame([
 | 
						|
      "hello" => ["hello", 1, 1, 4],
 | 
						|
      "world" => ["world", 2, 2, 3],
 | 
						|
      "first" => ["first", 3, 1, 2],
 | 
						|
      "second" => ["second", 4, 2, 1],
 | 
						|
    ], $c->discharge(null, false));
 | 
						|
 | 
						|
    $c->sort([2]);
 | 
						|
    self::assertSame([
 | 
						|
      "hello" => ["hello", 1, 1, 4],
 | 
						|
      "first" => ["first", 3, 1, 2],
 | 
						|
      "world" => ["world", 2, 2, 3],
 | 
						|
      "second" => ["second", 4, 2, 1],
 | 
						|
    ], $c->discharge(null, false));
 | 
						|
 | 
						|
    $c->sort([3]);
 | 
						|
    self::assertSame([
 | 
						|
      "second" => ["second", 4, 2, 1],
 | 
						|
      "first" => ["first", 3, 1, 2],
 | 
						|
      "world" => ["world", 2, 2, 3],
 | 
						|
      "hello" => ["hello", 1, 1, 4],
 | 
						|
    ], $c->discharge(null, false));
 | 
						|
 | 
						|
    $c->sort([2, 3]);
 | 
						|
    self::assertSame([
 | 
						|
      "first" => ["first", 3, 1, 2],
 | 
						|
      "hello" => ["hello", 1, 1, 4],
 | 
						|
      "second" => ["second", 4, 2, 1],
 | 
						|
      "world" => ["world", 2, 2, 3],
 | 
						|
    ], $c->discharge(null, false));
 | 
						|
  }
 | 
						|
}
 |