diff options
author | Florian Dold <florian.dold@gmail.com> | 2020-08-03 13:00:48 +0530 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2020-08-03 13:01:05 +0530 |
commit | ffd2a62c3f7df94365980302fef3bc3376b48182 (patch) | |
tree | 270af6f16b4cc7f5da2afdba55c8bc9dbea5eca5 /src/util/codec-test.ts | |
parent | aa481e42675fb7c4dcbbeec0ba1c61e1953b9596 (diff) | |
download | wallet-core-ffd2a62c3f7df94365980302fef3bc3376b48182.tar.xz |
modularize repo, use pnpm, improve typechecking
Diffstat (limited to 'src/util/codec-test.ts')
-rw-r--r-- | src/util/codec-test.ts | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/src/util/codec-test.ts b/src/util/codec-test.ts deleted file mode 100644 index b429c318c..000000000 --- a/src/util/codec-test.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - This file is part of GNU Taler - (C) 2018-2019 GNUnet e.V. - - GNU Taler is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> - */ - -/** - * Type-safe codecs for converting from/to JSON. - */ - -import test from "ava"; -import { - Codec, - makeCodecForObject, - makeCodecForConstString, - codecForString, - makeCodecForUnion, -} from "./codec"; - -interface MyObj { - foo: string; -} - -interface AltOne { - type: "one"; - foo: string; -} - -interface AltTwo { - type: "two"; - bar: string; -} - -type MyUnion = AltOne | AltTwo; - -test("basic codec", (t) => { - const myObjCodec = makeCodecForObject<MyObj>() - .property("foo", codecForString) - .build("MyObj"); - const res = myObjCodec.decode({ foo: "hello" }); - t.assert(res.foo === "hello"); - - t.throws(() => { - myObjCodec.decode({ foo: 123 }); - }); -}); - -test("union", (t) => { - const altOneCodec: Codec<AltOne> = makeCodecForObject<AltOne>() - .property("type", makeCodecForConstString("one")) - .property("foo", codecForString) - .build("AltOne"); - const altTwoCodec: Codec<AltTwo> = makeCodecForObject<AltTwo>() - .property("type", makeCodecForConstString("two")) - .property("bar", codecForString) - .build("AltTwo"); - const myUnionCodec: Codec<MyUnion> = makeCodecForUnion<MyUnion>() - .discriminateOn("type") - .alternative("one", altOneCodec) - .alternative("two", altTwoCodec) - .build<MyUnion>("MyUnion"); - - const res = myUnionCodec.decode({ type: "one", foo: "bla" }); - t.is(res.type, "one"); - if (res.type == "one") { - t.is(res.foo, "bla"); - } -}); |