From 00cccd84ce5bd698c7164c70de4aac4414a99779 Mon Sep 17 00:00:00 2001 From: Julian Mendez Date: Mon, 28 Oct 2024 21:48:03 +0100 Subject: [PATCH] Add test cases for serializer --- .../prototype/example/market/core/Market.lean | 5 +- .../prototype/example/market/core/MyList.lean | 4 + .../prototype/example/market/core/Market.soda | 5 +- ...ationProcessor.soda => MarketBuilder.soda} | 16 ++++ .../prototype/example/market/core/MyList.soda | 4 +- .../example/market/core/Package.scala | 76 ++++++++++------ .../prototype/example/market/main/Main.soda | 8 +- .../example/market/main/Package.scala | 9 +- .../example/market/main/Package.soda | 1 + core/src/test/resources/example/example1.yaml | 89 +++++++++++++++++++ .../market/parser/Example0OperationList.soda | 20 ++++- .../example/market/parser/Package.scala | 25 ++++-- .../example/market/parser/Package.soda | 3 +- .../example/market/serializer/Package.scala | 57 ++++++++++++ .../example/market/serializer/Package.soda | 25 ++++++ .../market/serializer/YamlSerializerSpec.soda | 35 ++++++++ 16 files changed, 333 insertions(+), 49 deletions(-) rename core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/{OperationProcessor.soda => MarketBuilder.soda} (56%) create mode 100644 core/src/test/resources/example/example1.yaml create mode 100644 core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/Package.scala create mode 100644 core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/Package.soda create mode 100644 core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/YamlSerializerSpec.soda diff --git a/Soda/se/umu/cs/soda/prototype/example/market/core/Market.lean b/Soda/se/umu/cs/soda/prototype/example/market/core/Market.lean index 80977ea..2fe2275 100644 --- a/Soda/se/umu/cs/soda/prototype/example/market/core/Market.lean +++ b/Soda/se/umu/cs/soda/prototype/example/market/core/Market.lean @@ -50,6 +50,7 @@ namespace MarketMod notation "_mm.get" => MyList.get notation "_mm.set" => MyList.set notation "_mm.foldl" => MyList.foldl + notation "_mm.append" => MyList.append def as_market (market : Market) : Market := Market.mk (market.accounts) (market.items) @@ -82,7 +83,7 @@ private def _deposit_into_known_account (accounts : List ( Money ) ) (user_id private def _deposit_into_accounts (accounts : List ( Money ) ) (user_id : Nat) (amount : Money) : List ( Money ) := if user_id == accounts.length - then amount :: accounts + then _mm.append ( Money ) (accounts) (amount) else _deposit_into_known_account (accounts) (user_id) (amount) @@ -104,7 +105,7 @@ private def _reassign_item (items : List ( Item ) ) (item_id : Nat) (user_id: private def _assign_to_user (items : List ( Item ) ) (item_id : Nat) (user_id: Nat) : List ( Item ) := if item_id == items.length - then Item.mk (user_id) (0) :: items + then _mm.append ( Item ) (items) (Item.mk (user_id) (0) ) else _reassign_item (items) (item_id) (user_id) diff --git a/Soda/se/umu/cs/soda/prototype/example/market/core/MyList.lean b/Soda/se/umu/cs/soda/prototype/example/market/core/MyList.lean index 7a890d3..8410d17 100644 --- a/Soda/se/umu/cs/soda/prototype/example/market/core/MyList.lean +++ b/Soda/se/umu/cs/soda/prototype/example/market/core/MyList.lean @@ -284,6 +284,10 @@ def foldl ( A : Type ) ( B : Type ) (list : List ( A ) ) (initial : B) ) + def append ( A : Type ) (first : List ( A ) ) (element : A) : List ( A ) := + reverse_fl ( A ) (element :: reverse_fl ( A ) (first) ) + + def monus1 (index : Nat) : Nat := match index with | Succ_ (k) => k diff --git a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/Market.soda b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/Market.soda index 47cca7f..c551ef5 100644 --- a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/Market.soda +++ b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/Market.soda @@ -36,6 +36,7 @@ class MarketMod notation "_mm.get" => MyList.get notation "_mm.set" => MyList.set notation "_mm.foldl" => MyList.foldl + notation "_mm.append" => MyList.append as_market (market : Market) : Market = Market.mk (market .accounts) (market .items) @@ -64,7 +65,7 @@ class MarketMod _deposit_into_accounts (accounts : List [Money] ) (user_id : Nat) (amount : Money) : List [Money] = if user_id == accounts .length - then amount :: accounts + then _mm .append [Money] (accounts) (amount) else _deposit_into_known_account (accounts) (user_id) (amount) deposit (m : Market) (user_id : Nat) (amount : Money) : Market = @@ -82,7 +83,7 @@ class MarketMod _assign_to_user (items : List [Item] ) (item_id : Nat) (user_id: Nat) : List [Item] = if item_id == items .length - then Item .mk (user_id) (0) :: items + then _mm .append [Item] (items) (Item .mk (user_id) (0) ) else _reassign_item (items) (item_id) (user_id) assign (m : Market) (item_id : Nat) (user_id : Nat) : Market = diff --git a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/OperationProcessor.soda b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/MarketBuilder.soda similarity index 56% rename from core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/OperationProcessor.soda rename to core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/MarketBuilder.soda index bbaf923..ae9fd90 100644 --- a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/OperationProcessor.soda +++ b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/MarketBuilder.soda @@ -1,3 +1,4 @@ + class OperationProcessor abstract @@ -12,3 +13,18 @@ class OperationProcessor end + +class MarketBuilder + + abstract + + operation_processor = OperationProcessor .mk + + empty_market = Market .mk (List [Money] () ) (List [Item] () ) + + build (operations : List [Operation] ) : Option [Market] = + operation_processor + .process (Some (empty_market) ) (operations) + +end + diff --git a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/MyList.soda b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/MyList.soda index 44a4da4..b65d382 100644 --- a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/MyList.soda +++ b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/MyList.soda @@ -169,7 +169,6 @@ class MyList reverse_tr [A : Type] (list : List [A] ) : List [A] = _tailrec_reverse [A] (list) (Nil) - reverse_fl [A : Type] (list : List [A] ) : List [A] = _tailrec_foldl [A] [List [A] ] (list) (Nil) ( lambda (accum : List [A] ) --> @@ -260,6 +259,9 @@ class MyList (elem) :: (accum) ) + append [A : Type] (first : List [A] ) (element : A) : List [A] = + reverse_fl [A] (element :: reverse_fl [A] (first) ) + monus1 (index : Nat) : Nat = match index case Succ_ (k) ==> k diff --git a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/Package.scala b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/Package.scala index fb7d044..3d6ce19 100644 --- a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/Package.scala +++ b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/core/Package.scala @@ -74,6 +74,7 @@ trait MarketMod notation "_mm.get" => MyList.get notation "_mm.set" => MyList.set notation "_mm.foldl" => MyList.foldl + notation "_mm.append" => MyList.append */ def as_market (market : Market) : Market = @@ -107,7 +108,7 @@ trait MarketMod private def _deposit_into_accounts (accounts : List [Money] ) (user_id : Nat) (amount : Money) : List [Money] = if ( user_id == accounts .length - ) amount :: accounts + ) _mm .append [Money] (accounts) (amount) else _deposit_into_known_account (accounts) (user_id) (amount) def deposit (m : Market) (user_id : Nat) (amount : Money) : Market = @@ -126,7 +127,7 @@ trait MarketMod private def _assign_to_user (items : List [Item] ) (item_id : Nat) (user_id: Nat) : List [Item] = if ( item_id == items .length - ) Item .mk (user_id) (0) :: items + ) _mm .append [Item] (items) (Item .mk (user_id) (0) ) else _reassign_item (items) (item_id) (user_id) def assign (m : Market) (item_id : Nat) (user_id : Nat) : Market = @@ -208,6 +209,51 @@ object MarketMod { } +trait OperationProcessor +{ + + + + private lazy val _mm : MyList = MyList .mk (true) + + def compute_next (maybe_market : Option [Market] ) (op : Operation) : Option [Market] = + op .process (maybe_market) + + def process (maybe_market : Option [Market] ) (operations : List [Operation] ) : Option [Market] = + _mm .foldl [Operation, Option [Market] ] (operations) (maybe_market) (compute_next) + +} + +case class OperationProcessor_ () extends OperationProcessor + +object OperationProcessor { + def mk : OperationProcessor = + OperationProcessor_ () +} + +trait MarketBuilder +{ + + + + lazy val operation_processor = OperationProcessor .mk + + lazy val empty_market = Market .mk (List [Money] () ) (List [Item] () ) + + def build (operations : List [Operation] ) : Option [Market] = + operation_processor + .process (Some (empty_market) ) (operations) + +} + +case class MarketBuilder_ () extends MarketBuilder + +object MarketBuilder { + def mk : MarketBuilder = + MarketBuilder_ () +} + + /* @@ -502,6 +548,9 @@ trait MyList (elem) :: (accum) ) + def append [A ] (first : List [A] ) (element : A) : List [A] = + reverse_fl [A] (element :: reverse_fl [A] (first) ) + def monus1 (index : Nat) : Nat = index match { case Succ_ (k) => k @@ -839,26 +888,3 @@ object OpSell { OpSell_ (item_id, user_id) } - -trait OperationProcessor -{ - - - - private lazy val _mm : MyList = MyList .mk (true) - - def compute_next (maybe_market : Option [Market] ) (op : Operation) : Option [Market] = - op .process (maybe_market) - - def process (maybe_market : Option [Market] ) (operations : List [Operation] ) : Option [Market] = - _mm .foldl [Operation, Option [Market] ] (operations) (maybe_market) (compute_next) - -} - -case class OperationProcessor_ () extends OperationProcessor - -object OperationProcessor { - def mk : OperationProcessor = - OperationProcessor_ () -} - diff --git a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Main.soda b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Main.soda index 64104b5..6c73d3e 100644 --- a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Main.soda +++ b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Main.soda @@ -10,7 +10,9 @@ class Main read_file (file_name : String) : String = @new String (Files .readAllBytes (Paths .get (file_name) ) ) - empty_market = Market .mk (List [Money] () ) (List [Item] () ) + market_builder = MarketBuilder .mk + + empty_market = market_builder .empty_market yaml_parser = YamlParser .mk @@ -21,8 +23,8 @@ class Main operation_processor = OperationProcessor .mk process_file (file_name : String) : Option [Market] = - operation_processor - .process (Some (empty_market) ) ( + market_builder + .build ( operation_parser .parse ( yaml_parser .parse ( @new StringReader (read_file (file_name) ) ) ) diff --git a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Package.scala b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Package.scala index aa73488..8f86bf0 100644 --- a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Package.scala +++ b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Package.scala @@ -12,6 +12,7 @@ import soda.se.umu.cs.soda.prototype.example.market.core.Item import soda.se.umu.cs.soda.prototype.example.market.core.Market import soda.se.umu.cs.soda.prototype.example.market.core.Money import soda.se.umu.cs.soda.prototype.example.market.core.OperationProcessor +import soda.se.umu.cs.soda.prototype.example.market.core.MarketBuilder import soda.se.umu.cs.soda.prototype.example.market.parser.OperationParser import soda.se.umu.cs.soda.prototype.example.market.parser.YamlParser import soda.se.umu.cs.soda.prototype.example.market.serializer.YamlSerializer @@ -28,7 +29,9 @@ trait Main def read_file (file_name : String) : String = new String (Files .readAllBytes (Paths .get (file_name) ) ) - lazy val empty_market = Market .mk (List [Money] () ) (List [Item] () ) + lazy val market_builder = MarketBuilder .mk + + lazy val empty_market = market_builder .empty_market lazy val yaml_parser = YamlParser .mk @@ -39,8 +42,8 @@ trait Main lazy val operation_processor = OperationProcessor .mk def process_file (file_name : String) : Option [Market] = - operation_processor - .process (Some (empty_market) ) ( + market_builder + .build ( operation_parser .parse ( yaml_parser .parse ( new StringReader (read_file (file_name) ) ) ) diff --git a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Package.soda b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Package.soda index 7a0759a..d1e18ba 100644 --- a/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Package.soda +++ b/core/src/main/scala/soda/se/umu/cs/soda/prototype/example/market/main/Package.soda @@ -13,6 +13,7 @@ import soda.se.umu.cs.soda.prototype.example.market.core.Market soda.se.umu.cs.soda.prototype.example.market.core.Money soda.se.umu.cs.soda.prototype.example.market.core.OperationProcessor + soda.se.umu.cs.soda.prototype.example.market.core.MarketBuilder soda.se.umu.cs.soda.prototype.example.market.parser.OperationParser soda.se.umu.cs.soda.prototype.example.market.parser.YamlParser soda.se.umu.cs.soda.prototype.example.market.serializer.YamlSerializer diff --git a/core/src/test/resources/example/example1.yaml b/core/src/test/resources/example/example1.yaml new file mode 100644 index 0000000..77b41cc --- /dev/null +++ b/core/src/test/resources/example/example1.yaml @@ -0,0 +1,89 @@ +--- +operations: +- deposit 0 4500 +- deposit 1 75 +- deposit 2 1800 +- deposit 3 2000 +- deposit 4 5700 +- deposit 5 2500 +- deposit 6 1900 +- deposit 7 2200 +- deposit 8 6600 +- deposit 9 2400 +- deposit 10 1750 +- deposit 11 2150 +- deposit 12 1850 +- deposit 13 2350 +- deposit 14 1950 +- deposit 15 2100 +- deposit 16 1650 +- deposit 17 2450 +- deposit 18 7950 +- deposit 19 2250 +- deposit 20 1700 +- deposit 21 2300 +- deposit 22 1800 +- deposit 23 2400 +- deposit 24 1750 +- deposit 25 2350 +- assign 0 12 +- price 0 40 +- assign 1 7 +- price 1 50 +- assign 2 20 +- price 2 25 +- assign 3 15 +- price 3 70 +- assign 4 8 +- price 4 100 +- assign 5 23 +- price 5 60 +- assign 6 14 +- price 6 30 +- assign 7 2 +- price 7 40 +- assign 8 19 +- price 8 25 +- assign 9 5 +- price 9 20 +- assign 10 22 +- price 10 90 +- assign 11 13 +- price 11 50 +- assign 12 4 +- price 12 100 +- assign 13 18 +- price 13 150 +- assign 14 9 +- price 14 30 +- assign 15 24 +- price 15 30 +- assign 16 11 +- price 16 25 +- assign 17 3 +- price 17 200 +- assign 18 17 +- price 18 20 +- assign 19 10 +- price 19 30 +- assign 20 21 +- price 20 20 +- assign 21 16 +- price 21 100 +- assign 22 1 +- price 22 100 +- assign 23 25 +- price 23 20 +- assign 24 6 +- price 24 30 +- assign 25 0 +- price 25 20 +- assign 26 15 +- price 26 25 +- assign 27 10 +- price 27 40 +- assign 28 20 +- price 28 80 +- assign 29 5 +- price 29 100 + diff --git a/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Example0OperationList.soda b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Example0OperationList.soda index dc3d5df..6b0b73f 100644 --- a/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Example0OperationList.soda +++ b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Example0OperationList.soda @@ -3,8 +3,8 @@ class Example0OperationList abstract - instance : Seq [Operation] = - Seq ( + basic_instance : List [Operation] = + List [Operation] ( OpDeposit .mk (0) (4500) , OpDeposit .mk (1) (75) , OpDeposit .mk (2) (1800) , @@ -90,8 +90,20 @@ class Example0OperationList OpAssign .mk (28) (20) , OpPrice .mk (28) (80) , OpAssign .mk (29) (5) , - OpPrice .mk (29) (100) , - OpSell .mk (10) (25) + OpPrice .mk (29) (100) + ) + + instance : Seq [Operation] = + basic_instance .++ ( + List [Operation] ( OpSell .mk (10) (25) ) ) + market_builder = MarketBuilder .mk + + market_basic_instance : Market = + market_builder + .build (basic_instance) + .getOrElse (market_builder .empty_market) + end + diff --git a/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Package.scala b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Package.scala index 604d1b5..7c85cb5 100644 --- a/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Package.scala +++ b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Package.scala @@ -5,6 +5,8 @@ import org.scalatest.Assertion import java.nio.file.Files import java.nio.file.Paths import java.io.StringReader +import soda.se.umu.cs.soda.prototype.example.market.core.Market +import soda.se.umu.cs.soda.prototype.example.market.core.MarketBuilder import soda.se.umu.cs.soda.prototype.example.market.core.Operation import soda.se.umu.cs.soda.prototype.example.market.core.OpAssign import soda.se.umu.cs.soda.prototype.example.market.core.OpDeposit @@ -12,10 +14,6 @@ import soda.se.umu.cs.soda.prototype.example.market.core.OpPrice import soda.se.umu.cs.soda.prototype.example.market.core.OpSell import soda.se.umu.cs.soda.prototype.example.market.core.OpUndefined - - - - trait Example0Instance { @@ -132,8 +130,8 @@ trait Example0OperationList - lazy val instance : Seq [Operation] = - Seq ( + lazy val basic_instance : List [Operation] = + List [Operation] ( OpDeposit .mk (0) (4500) , OpDeposit .mk (1) (75) , OpDeposit .mk (2) (1800) , @@ -219,10 +217,21 @@ trait Example0OperationList OpAssign .mk (28) (20) , OpPrice .mk (28) (80) , OpAssign .mk (29) (5) , - OpPrice .mk (29) (100) , - OpSell .mk (10) (25) + OpPrice .mk (29) (100) ) + lazy val instance : Seq [Operation] = + basic_instance .++ ( + List [Operation] ( OpSell .mk (10) (25) ) + ) + + lazy val market_builder = MarketBuilder .mk + + lazy val market_basic_instance : Market = + market_builder + .build (basic_instance) + .getOrElse (market_builder .empty_market) + } case class Example0OperationList_ () extends Example0OperationList diff --git a/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Package.soda b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Package.soda index e4bfcb2..2ec3af9 100644 --- a/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Package.soda +++ b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/parser/Package.soda @@ -6,10 +6,11 @@ import java.nio.file.Files java.nio.file.Paths java.io.StringReader + soda.se.umu.cs.soda.prototype.example.market.core.Market + soda.se.umu.cs.soda.prototype.example.market.core.MarketBuilder soda.se.umu.cs.soda.prototype.example.market.core.Operation soda.se.umu.cs.soda.prototype.example.market.core.OpAssign soda.se.umu.cs.soda.prototype.example.market.core.OpDeposit soda.se.umu.cs.soda.prototype.example.market.core.OpPrice soda.se.umu.cs.soda.prototype.example.market.core.OpSell soda.se.umu.cs.soda.prototype.example.market.core.OpUndefined - diff --git a/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/Package.scala b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/Package.scala new file mode 100644 index 0000000..a5a8597 --- /dev/null +++ b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/Package.scala @@ -0,0 +1,57 @@ +package soda.se.umu.cs.soda.prototype.example.market.serializer + +import org.scalatest.funsuite.AnyFunSuite +import org.scalatest.Assertion +import java.nio.file.Files +import java.nio.file.Paths +import java.io.StringReader +import soda.se.umu.cs.soda.prototype.example.market.parser.Example0Instance +import soda.se.umu.cs.soda.prototype.example.market.parser.Example0OperationList +import soda.se.umu.cs.soda.prototype.example.market.core.Operation +import soda.se.umu.cs.soda.prototype.example.market.core.OpAssign +import soda.se.umu.cs.soda.prototype.example.market.core.OpDeposit +import soda.se.umu.cs.soda.prototype.example.market.core.OpPrice +import soda.se.umu.cs.soda.prototype.example.market.core.OpSell +import soda.se.umu.cs.soda.prototype.example.market.core.OpUndefined +import soda.se.umu.cs.soda.prototype.example.market.core.Item +import soda.se.umu.cs.soda.prototype.example.market.core.Market +import soda.se.umu.cs.soda.prototype.example.market.core.MarketBuilder +import soda.se.umu.cs.soda.prototype.example.market.core.Money +import soda.se.umu.cs.soda.prototype.example.market.core.OperationProcessor +import soda.se.umu.cs.soda.prototype.example.market.parser.OperationParser +import soda.se.umu.cs.soda.prototype.example.market.parser.YamlParser + +case class YamlParserSpec () + extends + AnyFunSuite +{ + + def check [A ] (obtained : A) (expected : A) : org.scalatest.compatible.Assertion = + assert (obtained == expected) + + def read_file (file_name : String) : String = + new String ( + Files .readAllBytes ( + Paths .get (getClass .getResource (file_name) .toURI) + ) + ) + + lazy val yaml_serializer = YamlSerializer .mk + + lazy val example0_name = "/example/example1.yaml" + + lazy val example0_contents = + read_file (example0_name) + + lazy val example0_market = Example0OperationList .mk .market_basic_instance + + test ("serializer example 1") ( + check ( + obtained = example0_contents + ) ( + expected = yaml_serializer .serialize_market (example0_market) + ) + ) + +} + diff --git a/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/Package.soda b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/Package.soda new file mode 100644 index 0000000..a0bc16e --- /dev/null +++ b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/Package.soda @@ -0,0 +1,25 @@ +package soda.se.umu.cs.soda.prototype.example.market.serializer + +import + org.scalatest.funsuite.AnyFunSuite + org.scalatest.Assertion + java.nio.file.Files + java.nio.file.Paths + java.io.StringReader + soda.se.umu.cs.soda.prototype.example.market.parser.Example0Instance + soda.se.umu.cs.soda.prototype.example.market.parser.Example0OperationList + soda.se.umu.cs.soda.prototype.example.market.core.Operation + soda.se.umu.cs.soda.prototype.example.market.core.OpAssign + soda.se.umu.cs.soda.prototype.example.market.core.OpDeposit + soda.se.umu.cs.soda.prototype.example.market.core.OpPrice + soda.se.umu.cs.soda.prototype.example.market.core.OpSell + soda.se.umu.cs.soda.prototype.example.market.core.OpUndefined + soda.se.umu.cs.soda.prototype.example.market.core.Item + soda.se.umu.cs.soda.prototype.example.market.core.Market + soda.se.umu.cs.soda.prototype.example.market.core.MarketBuilder + soda.se.umu.cs.soda.prototype.example.market.core.Money + soda.se.umu.cs.soda.prototype.example.market.core.OperationProcessor + soda.se.umu.cs.soda.prototype.example.market.parser.OperationParser + soda.se.umu.cs.soda.prototype.example.market.parser.YamlParser + + diff --git a/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/YamlSerializerSpec.soda b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/YamlSerializerSpec.soda new file mode 100644 index 0000000..6337882 --- /dev/null +++ b/core/src/test/scala/soda/se/umu/cs/soda/prototype/example/market/serializer/YamlSerializerSpec.soda @@ -0,0 +1,35 @@ + +class YamlParserSpec () + extends + AnyFunSuite + + check [A : Type] (obtained : A) (expected : A) : org.scalatest.compatible.Assertion = + assert (obtained == expected) + + + read_file (file_name : String) : String = + @new String ( + Files .readAllBytes ( + Paths .get (getClass .getResource (file_name) .toURI) + ) + ) + + yaml_serializer = YamlSerializer .mk + + example0_name = "/example/example1.yaml" + + example0_contents = + read_file (example0_name) + + example0_market = Example0OperationList .mk .market_basic_instance + + test ("serializer example 1") ( + check ( + obtained := example0_contents + ) ( + expected := yaml_serializer .serialize_market (example0_market) + ) + ) + +end +