modifs.mineures sans commentaires
This commit is contained in:
parent
b6d20261e2
commit
7be840f2cc
42
bbnurse
42
bbnurse
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
#source /etc/nulib.sh || exit 1
|
source /etc/nulib.sh || exit 1
|
||||||
source "$(dirname -- "$0")/vendor/nulib/php/load.sh" || exit 1
|
#source "$(dirname -- "$0")/vendor/nulib/php/load.sh" || exit 1
|
||||||
|
|
||||||
function copy_nurse() {
|
function copy_nurse() {
|
||||||
:
|
:
|
||||||
|
@ -20,9 +20,16 @@ function copy_mature() {
|
||||||
setx src=abspath "$src"
|
setx src=abspath "$src"
|
||||||
[ "${src#$MYDIR/src/}" != "$src" ] || die "la source doit être dans nur-sery/src/"
|
[ "${src#$MYDIR/src/}" != "$src" ] || die "la source doit être dans nur-sery/src/"
|
||||||
src="${src#$MYDIR/src/}"
|
src="${src#$MYDIR/src/}"
|
||||||
|
if [[ "$src" == */* ]]; then
|
||||||
path="${src%/*}"
|
path="${src%/*}"
|
||||||
filename="${src##*/}"
|
filename="${src##*/}"
|
||||||
|
else
|
||||||
|
path=
|
||||||
|
filename="$src"
|
||||||
|
fi
|
||||||
class="${filename%.php}"
|
class="${filename%.php}"
|
||||||
|
srcdir="$MYDIR/src"
|
||||||
|
src="$srcdir/$src"
|
||||||
elif [ -d "$src" ]; then
|
elif [ -d "$src" ]; then
|
||||||
# répertoire de package
|
# répertoire de package
|
||||||
setx src=abspath "$src"
|
setx src=abspath "$src"
|
||||||
|
@ -48,14 +55,13 @@ function copy_mature() {
|
||||||
destpackage='nulib'
|
destpackage='nulib'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local dest="${1:-.}"; shift
|
setx Dest=abspath "$Dest"
|
||||||
setx dest=abspath "$dest"
|
if [[ "$Dest" == */nulib ]]; then
|
||||||
if [[ "$dest" == */nulib ]]; then
|
|
||||||
libname=nulib
|
libname=nulib
|
||||||
libdir="$dest"
|
libdir="$Dest"
|
||||||
elif [[ "$dest" == */nulib/* ]]; then
|
elif [[ "$Dest" == */nulib/* ]]; then
|
||||||
libname=nulib
|
libname=nulib
|
||||||
libdir="${dest%%/nulib/*}/nulib"
|
libdir="${Dest%%/nulib/*}/nulib"
|
||||||
else
|
else
|
||||||
die "seul la maturation vers nulib est supporté"
|
die "seul la maturation vers nulib est supporté"
|
||||||
fi
|
fi
|
||||||
|
@ -75,7 +81,12 @@ function copy_mature() {
|
||||||
|
|
||||||
if [ -n "$class" ]; then
|
if [ -n "$class" ]; then
|
||||||
# Maturation d'un seul fichier
|
# Maturation d'un seul fichier
|
||||||
die "TODO"
|
etitle "Maturation de $srcpackage vers $destpackage"
|
||||||
|
srcname="${src#$srcdir/}"
|
||||||
|
dest="$destdir/$srcname"
|
||||||
|
estep "$srcname"
|
||||||
|
mkdirof "$dest"
|
||||||
|
sed "s|${nurserypackage//\\/\\\\}|${nulibpackage//\\/\\\\}|g" <"$src" >"$dest"
|
||||||
else
|
else
|
||||||
# Maturation de toute un package
|
# Maturation de toute un package
|
||||||
etitle "Maturation de $srcpackage vers $destpackage"
|
etitle "Maturation de $srcpackage vers $destpackage"
|
||||||
|
@ -84,7 +95,7 @@ function copy_mature() {
|
||||||
for src in "${srcs[@]}"; do
|
for src in "${srcs[@]}"; do
|
||||||
srcname="${src#$srcdir/}"
|
srcname="${src#$srcdir/}"
|
||||||
dest="$destdir/$srcname"
|
dest="$destdir/$srcname"
|
||||||
estep "${src#$srcdir/}"
|
estep "$srcname"
|
||||||
mkdirof "$dest"
|
mkdirof "$dest"
|
||||||
sed "s|${nurserypackage//\\/\\\\}|${nulibpackage//\\/\\\\}|g" <"$src" >"$dest"
|
sed "s|${nurserypackage//\\/\\\\}|${nulibpackage//\\/\\\\}|g" <"$src" >"$dest"
|
||||||
done
|
done
|
||||||
|
@ -113,14 +124,17 @@ function update_mature() {
|
||||||
:
|
:
|
||||||
}
|
}
|
||||||
|
|
||||||
action=update
|
action=copy
|
||||||
evolution=mature
|
evolution=mature
|
||||||
|
Dest=
|
||||||
args=(
|
args=(
|
||||||
"Gérer la maturation d'une classe ou d'un package"
|
"Gérer la maturation d'une classe ou d'un package"
|
||||||
"
|
"
|
||||||
|
-cm SRC [-d DEST]
|
||||||
-cn SRC
|
-cn SRC
|
||||||
-cm SRC [DEST]
|
-u[n|m] package|Class [-d DEST]
|
||||||
-u[n|m] package|Class [DEST]
|
|
||||||
|
IMPORTANT: pour l'instant, seule la copie à maturation (-cm) est implémentée
|
||||||
|
|
||||||
Il y a deux types d'évolutions possibles:
|
Il y a deux types d'évolutions possibles:
|
||||||
* mettre en nurserie (-n)
|
* mettre en nurserie (-n)
|
||||||
|
@ -142,6 +156,7 @@ Pour chaque type d'évolution, il y a deux actions possibles:
|
||||||
la version mature à maturation
|
la version mature à maturation
|
||||||
L'argument est un 'package' ou un 'sous\\package' (dont le nom commence par
|
L'argument est un 'package' ou un 'sous\\package' (dont le nom commence par
|
||||||
une minuscule) ou une 'Classe' (dont le nom commence par une majuscule)"
|
une minuscule) ou une 'Classe' (dont le nom commence par une majuscule)"
|
||||||
|
-d:,--dest Dest= "Spécifier la destination"
|
||||||
-c,--copy action=copy "Copier de/vers un projet nulib-*"
|
-c,--copy action=copy "Copier de/vers un projet nulib-*"
|
||||||
-u,--update action=update "Mettre à jour un projet. C'est l'option par défaut"
|
-u,--update action=update "Mettre à jour un projet. C'est l'option par défaut"
|
||||||
-i,-n,--nurse evolution=nurse "Mettre en nurserie"
|
-i,-n,--nurse evolution=nurse "Mettre en nurserie"
|
||||||
|
@ -149,4 +164,5 @@ Pour chaque type d'évolution, il y a deux actions possibles:
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
|
[ -n "$Dest" ] || Dest=.
|
||||||
"${action}_${evolution}" "$@"
|
"${action}_${evolution}" "$@"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\b\io;
|
namespace nur\b\io;
|
||||||
|
|
||||||
|
use nur\sery\file\base\FileReader;
|
||||||
use nur\v\http;
|
use nur\v\http;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3,6 +3,7 @@ namespace nur\ref;
|
||||||
|
|
||||||
use nur\data\types\Metadata;
|
use nur\data\types\Metadata;
|
||||||
use nur\md;
|
use nur\md;
|
||||||
|
use nur\sery\os\file\file;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ref_type: référence des types utilisables dans les schémas
|
* Class ref_type: référence des types utilisables dans les schémas
|
||||||
|
@ -104,7 +105,7 @@ class ref_type {
|
||||||
/** comme {@link CONTENT} mais nullable */
|
/** comme {@link CONTENT} mais nullable */
|
||||||
const NCONTENT = "?".self::CONTENT;
|
const NCONTENT = "?".self::CONTENT;
|
||||||
|
|
||||||
/** comme {@link FILE} mais nullable */
|
/** comme {@link \nur\sery\FILE} mais nullable */
|
||||||
const NFILE = "?".self::FILE;
|
const NFILE = "?".self::FILE;
|
||||||
|
|
||||||
/** comme {@link DATETIME} mais nullable */
|
/** comme {@link DATETIME} mais nullable */
|
||||||
|
|
|
@ -79,6 +79,15 @@ class cv {
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
|
/** échanger les deux valeurs */
|
||||||
|
static final function swap(&$a, &$b): void {
|
||||||
|
$tmp = $a;
|
||||||
|
$a = $b;
|
||||||
|
$b = $tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
/** mettre à jour $dest avec $value si $cond($value) est vrai */
|
/** mettre à jour $dest avec $value si $cond($value) est vrai */
|
||||||
static final function set_if(&$dest, $value, callable $cond) {
|
static final function set_if(&$dest, $value, callable $cond) {
|
||||||
if ($cond($value)) $dest = $value;
|
if ($cond($value)) $dest = $value;
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os;
|
namespace nur\sery;
|
||||||
|
|
||||||
use nur\sery\os\file\FileReader;
|
use nur\sery\file\base\FileReader;
|
||||||
use nur\sery\os\file\FileWriter;
|
use nur\sery\file\base\FileWriter;
|
||||||
use nur\sery\os\file\MemoryStream;
|
use nur\sery\file\base\MemoryStream;
|
||||||
use nur\sery\os\file\SharedFile;
|
use nur\sery\file\base\SharedFile;
|
||||||
use nur\sery\os\file\TempStream;
|
use nur\sery\file\base\TempStream;
|
||||||
use nur\sery\os\file\TmpfileWriter;
|
use nur\sery\file\base\TmpfileWriter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class file: outils pour gérer les fichiers
|
* Class file: outils pour gérer les fichiers
|
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file;
|
||||||
|
|
||||||
use nur\sery\os\EOFException;
|
use nur\sery\os\EOFException;
|
||||||
use nur\sery\os\IOException;
|
use nur\sery\os\IOException;
|
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file;
|
||||||
|
|
||||||
use nur\sery\os\IOException;
|
use nur\sery\os\IOException;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file;
|
||||||
|
|
||||||
use Iterator;
|
use Iterator;
|
||||||
use nur\sery\os\IOException;
|
use nur\sery\os\IOException;
|
|
@ -1,7 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
use nur\sery\os\IOException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class FileReader: un fichier accédé en lecture
|
* Class FileReader: un fichier accédé en lecture
|
|
@ -1,9 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
use nur\sery\os\IOException;
|
use nur\sery\os\IOException;
|
||||||
use nur\sery\os\sh;
|
use nur\sery\os\sh;
|
||||||
use nur\sery\web\http;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class FileWriter: un fichier accédé en lecture/écriture
|
* Class FileWriter: un fichier accédé en lecture/écriture
|
|
@ -1,7 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
use nur\sery\os\IOException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class MemoryStream: un flux qui peut être lu ou écrit, et qui reste
|
* Class MemoryStream: un flux qui peut être lu ou écrit, et qui reste
|
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
use nur\sery\ValueException;
|
use nur\sery\ValueException;
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
|
use nur\sery\file\csv\csv_flavours;
|
||||||
|
use nur\sery\file\IReader;
|
||||||
|
use nur\sery\file\IWriter;
|
||||||
use nur\sery\NoMoreDataException;
|
use nur\sery\NoMoreDataException;
|
||||||
use nur\sery\os\csv\csv_flavours;
|
|
||||||
use nur\sery\os\EOFException;
|
use nur\sery\os\EOFException;
|
||||||
use nur\sery\os\IOException;
|
use nur\sery\os\IOException;
|
||||||
use nur\sery\php\iter\AbstractIterator;
|
use nur\sery\php\iter\AbstractIterator;
|
|
@ -1,18 +1,19 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
use nur\A;
|
use nur\sery\file\_IFile;
|
||||||
use nur\b\io\IOException;
|
use nur\sery\os\IOException;
|
||||||
|
|
||||||
trait TStreamFilter {
|
trait TStreamFilter {
|
||||||
private $filters = null;
|
private $filters = null;
|
||||||
|
|
||||||
function appendFilter(string $filterName, ?int $readWrite=null, $params=null): void {
|
function appendFilter(string $filterName, ?int $readWrite=null, $params=null): void {
|
||||||
A::append($this->filters, [$filterName, $readWrite, $params]);
|
$this->filters[] = [$filterName, $readWrite, $params];
|
||||||
}
|
}
|
||||||
|
|
||||||
function prependFilter(string $filterName, ?int $readWrite=null, $params=null): void {
|
function prependFilter(string $filterName, ?int $readWrite=null, $params=null): void {
|
||||||
A::prepend($this->filters, [$filterName, $readWrite, $params]);
|
if ($this->filters === null) $this->filters = [];
|
||||||
|
array_unshift($this->filters, [$filterName, $readWrite, $params]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setEncodingFilter(string $from, string $to): void {
|
function setEncodingFilter(string $from, string $to): void {
|
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TempStream: un flux qui peut être lu ou écrit, et qui reste en mémoire,
|
* Class TempStream: un flux qui peut être lu ou écrit, et qui reste en mémoire,
|
|
@ -1,9 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
use nur\sery\os\IOException;
|
use nur\sery\os\IOException;
|
||||||
use nur\sery\os\path;
|
use nur\sery\os\path;
|
||||||
use nur\sery\web\http;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TmpfileWriter: un fichier temporaire accédé en lecture/écriture
|
* Class TmpfileWriter: un fichier temporaire accédé en lecture/écriture
|
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
use nur\sery\os\IOException;
|
use nur\sery\os\IOException;
|
||||||
use nur\sery\web\http;
|
use nur\sery\web\http;
|
|
@ -1,8 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\csv;
|
namespace nur\sery\file\csv;
|
||||||
|
|
||||||
use nur\A;
|
use nur\sery\cl;
|
||||||
use nur\ref\ref_csv;
|
use nur\sery\ref\os\csv\ref_csv;
|
||||||
|
|
||||||
class csv_flavours {
|
class csv_flavours {
|
||||||
const MAP = [
|
const MAP = [
|
||||||
|
@ -41,6 +41,6 @@ class csv_flavours {
|
||||||
}
|
}
|
||||||
|
|
||||||
static final function get_encoding(string $flavour): ?string {
|
static final function get_encoding(string $flavour): ?string {
|
||||||
return A::get(self::ENCODINGS, $flavour);
|
return cl::get(self::ENCODINGS, $flavour);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,7 +3,7 @@ namespace nur\sery\output\std;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use nur\sery\cl;
|
use nur\sery\cl;
|
||||||
use nur\sery\os\file\Stream;
|
use nur\sery\file\base\Stream;
|
||||||
use nur\sery\php\content\content;
|
use nur\sery\php\content\content;
|
||||||
use nur\sery\php\content\IContent;
|
use nur\sery\php\content\IContent;
|
||||||
use nur\sery\php\content\IPrintable;
|
use nur\sery\php\content\IPrintable;
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery;
|
namespace nur\sery;
|
||||||
|
|
||||||
use nur\base;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class str: gestion des chaines de caractère "simples"
|
* Class str: gestion des chaines de caractère "simples"
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
<?php
|
<?php
|
||||||
namespace nur\sery\os\file;
|
namespace nur\sery\file\base;
|
||||||
|
|
||||||
|
use nur\sery\file\base\FileReader;
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
class FileReaderTest extends TestCase {
|
class FileReaderTest extends TestCase {
|
||||||
function testIgnoreBom() {
|
function testIgnoreBom() {
|
||||||
# la lecture avec et sans BOM doit être identique
|
# la lecture avec et sans BOM doit être identique
|
||||||
## sans BOM
|
## sans BOM
|
||||||
$reader = new FileReader(__DIR__.'/impl/sans_bom.txt');
|
$reader = new FileReader(__DIR__ . '/impl/sans_bom.txt');
|
||||||
self::assertSame("0123456789", $reader->fread(10));
|
self::assertSame("0123456789", $reader->fread(10));
|
||||||
self::assertSame(10, $reader->ftell());
|
self::assertSame(10, $reader->ftell());
|
||||||
$reader->seek(30);
|
$reader->seek(30);
|
||||||
|
@ -20,7 +21,7 @@ class FileReaderTest extends TestCase {
|
||||||
self::assertSame("0123456789\n", $reader->getContents());
|
self::assertSame("0123456789\n", $reader->getContents());
|
||||||
$reader->close();
|
$reader->close();
|
||||||
## avec BOM
|
## avec BOM
|
||||||
$reader = new FileReader(__DIR__.'/impl/avec_bom.txt');
|
$reader = new FileReader(__DIR__ . '/impl/avec_bom.txt');
|
||||||
self::assertSame("0123456789", $reader->fread(10));
|
self::assertSame("0123456789", $reader->fread(10));
|
||||||
self::assertSame(10, $reader->ftell());
|
self::assertSame(10, $reader->ftell());
|
||||||
$reader->seek(30);
|
$reader->seek(30);
|
||||||
|
@ -35,25 +36,25 @@ class FileReaderTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
function testCsvAutoParams() {
|
function testCsvAutoParams() {
|
||||||
$reader = new FileReader(__DIR__.'/impl/msexcel.csv');
|
$reader = new FileReader(__DIR__ . '/impl/msexcel.csv');
|
||||||
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
|
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
|
||||||
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
|
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
|
||||||
self::assertNull($reader->fgetcsv());
|
self::assertNull($reader->fgetcsv());
|
||||||
$reader->close();
|
$reader->close();
|
||||||
|
|
||||||
$reader = new FileReader(__DIR__.'/impl/ooffice.csv');
|
$reader = new FileReader(__DIR__ . '/impl/ooffice.csv');
|
||||||
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
|
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
|
||||||
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
|
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
|
||||||
self::assertNull($reader->fgetcsv());
|
self::assertNull($reader->fgetcsv());
|
||||||
$reader->close();
|
$reader->close();
|
||||||
|
|
||||||
$reader = new FileReader(__DIR__.'/impl/weird.tsv');
|
$reader = new FileReader(__DIR__ . '/impl/weird.tsv');
|
||||||
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
|
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
|
||||||
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
|
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
|
||||||
self::assertNull($reader->fgetcsv());
|
self::assertNull($reader->fgetcsv());
|
||||||
$reader->close();
|
$reader->close();
|
||||||
|
|
||||||
$reader = new FileReader(__DIR__.'/impl/avec_bom.csv');
|
$reader = new FileReader(__DIR__ . '/impl/avec_bom.csv');
|
||||||
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
|
self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv());
|
||||||
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
|
self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv());
|
||||||
self::assertNull($reader->fgetcsv());
|
self::assertNull($reader->fgetcsv());
|
|
@ -2,7 +2,7 @@
|
||||||
namespace nur\sery\php\time;
|
namespace nur\sery\php\time;
|
||||||
|
|
||||||
use DateTimeZone;
|
use DateTimeZone;
|
||||||
use PHPUnit\Framework\TestCase;
|
use nulib\tests\TestCase;
|
||||||
|
|
||||||
class DateTest extends TestCase {
|
class DateTest extends TestCase {
|
||||||
protected static function dt(string $datetime): Date {
|
protected static function dt(string $datetime): Date {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
namespace nur\sery\php\time;
|
namespace nur\sery\php\time;
|
||||||
|
|
||||||
use DateTimeZone;
|
use DateTimeZone;
|
||||||
use PHPUnit\Framework\TestCase;
|
use nulib\tests\TestCase;
|
||||||
|
|
||||||
class DateTimeTest extends TestCase {
|
class DateTimeTest extends TestCase {
|
||||||
protected static function dt(string $datetime): DateTime {
|
protected static function dt(string $datetime): DateTime {
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
namespace nur\sery\php\time;
|
namespace nur\sery\php\time;
|
||||||
|
|
||||||
use DateTimeZone;
|
use DateTimeZone;
|
||||||
use nur\sery\php\time\DateTime;
|
use nulib\tests\TestCase;
|
||||||
use nur\sery\php\time\Delay;
|
|
||||||
use nur\t\TestCase;
|
|
||||||
|
|
||||||
class DelayTest extends TestCase {
|
class DelayTest extends TestCase {
|
||||||
protected static function dt(string $datetime): DateTime {
|
protected static function dt(string $datetime): DateTime {
|
||||||
|
|
Loading…
Reference in New Issue