From 9b9dcdec17228d1f4c9a98666562bc367fd7ba2a Mon Sep 17 00:00:00 2001 From: Alessandro Ferro <49845537+xfarrow@users.noreply.github.com> Date: Fri, 9 Apr 2021 19:08:43 +0200 Subject: [PATCH] Library 1 Seems to be completed --- .../{exercise1old => exercise1}/Exercise1.pdf | Bin librerie/exercise1/container/container.hpp | 2 +- librerie/exercise1/list/list.cpp | 15 +- librerie/exercise1/list/list.hpp | 2 +- librerie/exercise1/main | Bin 255240 -> 260176 bytes librerie/exercise1/main.cpp | 1 - librerie/exercise1/zmytest/test.cpp | 187 ++++++-- librerie/exercise1/zmytest/test.hpp | 37 +- librerie/exercise1old/build.sh | 7 - librerie/exercise1old/container/container.cpp | 17 - librerie/exercise1old/container/container.hpp | 304 ------------ librerie/exercise1old/list/list.cpp | 264 ----------- librerie/exercise1old/list/list.hpp | 164 ------- librerie/exercise1old/main.cpp | 18 - librerie/exercise1old/vector/vector.cpp | 181 ------- librerie/exercise1old/vector/vector.hpp | 105 ---- .../zlasdtest/container/container.cpp | 49 -- .../zlasdtest/container/container.hpp | 301 ------------ .../zlasdtest/exercise1/fulltest.cpp | 3 - .../zlasdtest/exercise1/simpletest.cpp | 447 ------------------ .../exercise1old/zlasdtest/exercise1/test.hpp | 13 - librerie/exercise1old/zlasdtest/list/list.hpp | 92 ---- librerie/exercise1old/zlasdtest/test.cpp | 17 - librerie/exercise1old/zlasdtest/test.hpp | 11 - .../exercise1old/zlasdtest/vector/vector.hpp | 37 -- librerie/exercise1old/zmytest/test.cpp | 70 --- librerie/exercise1old/zmytest/test.hpp | 37 -- 27 files changed, 168 insertions(+), 2213 deletions(-) rename librerie/{exercise1old => exercise1}/Exercise1.pdf (100%) delete mode 100755 librerie/exercise1old/build.sh delete mode 100644 librerie/exercise1old/container/container.cpp delete mode 100644 librerie/exercise1old/container/container.hpp delete mode 100644 librerie/exercise1old/list/list.cpp delete mode 100644 librerie/exercise1old/list/list.hpp delete mode 100644 librerie/exercise1old/main.cpp delete mode 100644 librerie/exercise1old/vector/vector.cpp delete mode 100644 librerie/exercise1old/vector/vector.hpp delete mode 100644 librerie/exercise1old/zlasdtest/container/container.cpp delete mode 100644 librerie/exercise1old/zlasdtest/container/container.hpp delete mode 100644 librerie/exercise1old/zlasdtest/exercise1/fulltest.cpp delete mode 100644 librerie/exercise1old/zlasdtest/exercise1/simpletest.cpp delete mode 100644 librerie/exercise1old/zlasdtest/exercise1/test.hpp delete mode 100644 librerie/exercise1old/zlasdtest/list/list.hpp delete mode 100644 librerie/exercise1old/zlasdtest/test.cpp delete mode 100644 librerie/exercise1old/zlasdtest/test.hpp delete mode 100644 librerie/exercise1old/zlasdtest/vector/vector.hpp delete mode 100644 librerie/exercise1old/zmytest/test.cpp delete mode 100644 librerie/exercise1old/zmytest/test.hpp diff --git a/librerie/exercise1old/Exercise1.pdf b/librerie/exercise1/Exercise1.pdf similarity index 100% rename from librerie/exercise1old/Exercise1.pdf rename to librerie/exercise1/Exercise1.pdf diff --git a/librerie/exercise1/container/container.hpp b/librerie/exercise1/container/container.hpp index c1aeca4..c28cc43 100644 --- a/librerie/exercise1/container/container.hpp +++ b/librerie/exercise1/container/container.hpp @@ -21,7 +21,7 @@ public: virtual ~Container() = default; // Copy assignment - Container& operator=(const Container&) = delete; // Copy assignment of abstract types should not be possible. + Container& operator=(const Container&) = delete; // Copy assignment of abstract types should not be possible. // Move assignment Container& operator=(Container&&) noexcept = delete;; // Move assignment of abstract types should not be possible. diff --git a/librerie/exercise1/list/list.cpp b/librerie/exercise1/list/list.cpp index 14e8c61..afbe198 100644 --- a/librerie/exercise1/list/list.cpp +++ b/librerie/exercise1/list/list.cpp @@ -5,7 +5,7 @@ namespace lasd { // Specific constructors template -List::Node::Node(Data newValue){ +List::Node::Node(const Data& newValue){ value = newValue; next = nullptr; } @@ -14,20 +14,20 @@ List::Node::Node(Data newValue){ template List::Node::Node(const Node& copyFrom){ value = copyFrom.value; + next = nullptr; } - - // Move constructor template List::Node::Node(Node&& moveFrom){ - std::move(value, moveFrom.value); - std::move(next, moveFrom.next); + std::swap(value, moveFrom.value); + std::swap(next, moveFrom.next); } template List::Node::Node(Data&& moveFrom){ - std::move(value, moveFrom); + std::swap(value, moveFrom); + } @@ -37,6 +37,7 @@ bool List::Node::operator==(const Node& node)const noexcept{ return (node.value == value); } + template bool List::Node::operator!=(const Node& node)const noexcept{ return !(*this == node); @@ -88,7 +89,6 @@ template template List& List::operator=(List&& moveFrom)noexcept{ if(*this != moveFrom){ - //Clear(); std::swap(size, moveFrom.size); std::swap(head, moveFrom.head); std::swap(tail, moveFrom.tail); @@ -146,6 +146,7 @@ bool List::operator!=(const List& list) const noexcept{ else{ struct Node* tmp = head; head = head->next; + tmp->next = nullptr; delete tmp; size--; } diff --git a/librerie/exercise1/list/list.hpp b/librerie/exercise1/list/list.hpp index debbf72..926649b 100644 --- a/librerie/exercise1/list/list.hpp +++ b/librerie/exercise1/list/list.hpp @@ -31,7 +31,7 @@ protected: /* ********************************************************************** */ // Specific constructors - Node(Data); + Node(const Data&); /* ********************************************************************** */ diff --git a/librerie/exercise1/main b/librerie/exercise1/main index d4c3fa9f35c2366b6215b5b5b6525b28820e2213..fc9d3defc531a190e30ebaeb09293e443c208691 100755 GIT binary patch literal 260176 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

`Byc_AgL5-`l)I9GgWgU6 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 ZMcsH6T}nTK-tT)_&=XWpykOlr{~v(`Dop?Y literal 255240 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

V%Tr&JNyp$K8 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 diff --git a/librerie/exercise1/main.cpp b/librerie/exercise1/main.cpp index 40f1274..4fb2a3a 100644 --- a/librerie/exercise1/main.cpp +++ b/librerie/exercise1/main.cpp @@ -14,6 +14,5 @@ int main() { std::cout << "Lasd Libraries 2020" << std::endl; menu(); - //lasdtest(); // To call in the menu of your library test! return 0; } diff --git a/librerie/exercise1/zmytest/test.cpp b/librerie/exercise1/zmytest/test.cpp index f7d28f3..a649600 100644 --- a/librerie/exercise1/zmytest/test.cpp +++ b/librerie/exercise1/zmytest/test.cpp @@ -1,6 +1,7 @@ #include"test.hpp" #include #include +#include "../zlasdtest/test.hpp" void menu(){ unsigned short int choice; @@ -15,17 +16,17 @@ void menu(){ switch(choice){ case 1: - //lasd::lasdtest(); + lasdtest(); break; case 2: chosenDataStructure = ChooseDataStructure(); chosenDataType = ChooseDataType(); + UseChosenType(chosenDataStructure,chosenDataType); break; default: std::cout<<"An error has occurred"< myvec){ std::cout<<"5. Controlla esistenza di uno specifico valore"<>std::ws; std::cin>>choice; @@ -131,8 +133,12 @@ void VectorIntegerFunctions(lasd::Vector myvec){ case 7: DoubleIntegers(myvec); break; + case 8: + std::cout< myvec){ unsigned short int choice; @@ -145,7 +151,8 @@ void VectorFloatFunctions(lasd::Vector myvec){ std::cout<<"5. Controlla esistenza di uno specifico valore"<>std::ws; std::cin>>choice; switch(choice){ @@ -170,8 +177,12 @@ void VectorFloatFunctions(lasd::Vector myvec){ case 7: SquareFloats(myvec); break; + case 8: + std::cout< myvec){ unsigned short int choice; @@ -184,7 +195,8 @@ void VectorStringFunctions(lasd::Vector myvec){ std::cout<<"5. Controlla esistenza di uno specifico valore"<>std::ws; std::cin>>choice; switch(choice){ @@ -209,8 +221,12 @@ void VectorStringFunctions(lasd::Vector myvec){ case 7: Uppercase(myvec); break; - } - }while(choice!=8); + case 8: + std::cout< void ShowFirstElement(lasd::Vector& vec){ @@ -250,9 +266,9 @@ void CheckElementExists(lasd::Vector& vec){ std::cin>>std::ws; std::cin>>element; if(vec.Exists(element)) - std::cout<<"The element exists"<& vec){ int pivot; @@ -272,7 +288,7 @@ if(data < (*(int*)par)){ void DoubleIntegers(lasd::Vector& vec){ void (*fun)(int&, void*) = DoubleAnInteger; vec.MapPreOrder(fun, nullptr); - std::cout<<"The doubled elements of the vector are: "; + std::cout<& vec){ float pivot, acc=1; void (*func)(const float&, const void*, void*) = AccumulateProduct; - std::cout<<"Which element do you choose to performa a product above it? "; + std::cout<<"Which element do you choose to perform a product above it? "; std::cin>>std::ws; std::cin>>pivot; vec.FoldPreOrder(func, (void*)&pivot, (void*)&acc); @@ -298,7 +314,7 @@ if(data > (*(float*)par)){ void SquareFloats(lasd::Vector& vec){ void (*fun)(float&, void*) = SquareAFloat; vec.MapPreOrder(fun, nullptr); - std::cout<<"The squared elements of the vector are: "; + std::cout<& vec){ void SquareAFloat(float& data, void* _){ data *= data; } - void ConcatLessThan(lasd::Vector& vec){ ulong pivot; std::string acc = ""; @@ -355,7 +370,8 @@ void ListIntegerFunctions(lasd::List mylist){ std::cout<<"5. Controlla esistenza di uno specifico valore"<>std::ws; std::cin>>choice; @@ -370,19 +386,23 @@ void ListIntegerFunctions(lasd::List mylist){ ShowElementWithASpecificIndex(mylist); break; case 4: - //ShowAllElements(mylist); + ShowAllElements(mylist); break; case 5: - //CheckElementExists(mylist); + CheckElementExists(mylist); break; case 6: - //SumLessThan(mylist); + SumLessThan(mylist); break; case 7: - //DoubleIntegers(mylist); + DoubleIntegers(mylist); + break; + case 8: + std::cout< mylist){ unsigned short int choice; @@ -395,7 +415,8 @@ void ListFloatFunctions(lasd::List mylist){ std::cout<<"5. Controlla esistenza di uno specifico valore"<>std::ws; std::cin>>choice; switch(choice){ @@ -409,19 +430,23 @@ void ListFloatFunctions(lasd::List mylist){ ShowElementWithASpecificIndex(mylist); break; case 4: - //ShowAllElements(myvec); + ShowAllElements(mylist); break; case 5: - //CheckElementExists(myvec); + CheckElementExists(mylist); break; case 6: - //ProductMoreThan(myvec); + ProductMoreThan(mylist); break; case 7: - //SquareFloats(myvec); + SquareFloats(mylist); break; - } - }while(choice!=8); + case 8: + std::cout< mylist){ unsigned short int choice; @@ -434,7 +459,8 @@ void ListStringFunctions(lasd::List mylist){ std::cout<<"5. Controlla esistenza di uno specifico valore"<>std::ws; std::cin>>choice; switch(choice){ @@ -448,19 +474,23 @@ void ListStringFunctions(lasd::List mylist){ ShowElementWithASpecificIndex(mylist); break; case 4: - //ShowAllElements(myvec); + ShowAllElements(mylist); break; case 5: - // CheckElementExists(myvec); + CheckElementExists(mylist); break; case 6: - //ConcatLessThan(myvec); + ConcatLessThan(mylist); break; case 7: - //Uppercase(myvec); + Uppercase(mylist); break; - } - }while(choice!=8); + case 8: + std::cout< @@ -483,6 +513,85 @@ void ShowElementWithASpecificIndex(lasd::List& list){ std::cout< +void ShowAllElements(lasd::List& list){ + void (*AuxMapPreOrder) (Data&, void*) = PrintSingleElement; + std::cout<<"The list contains:"< +void CheckElementExists(lasd::List& list){ + Data element; + std::cout<<"What element do you wanna check its exsistence on? "; + std::cin>>std::ws; + std::cin>>element; + if(list.Exists(element)) + std::cout<<"The element exists"<& list){ + int pivot; + ulong acc=0; + void (*func)(const int&, const void*, void*) = AccumulateSum; + std::cout<<"Which element do you choose to performa a sum under it? "; + std::cin>>std::ws; + std::cin>>pivot; + list.FoldPreOrder(func, (void*)&pivot, (void*)&acc); + std::cout<<"The result of the sum is "<& list){ + void (*fun)(int&, void*) = DoubleAnInteger; + list.MapPreOrder(fun, nullptr); + std::cout<& list){ + float pivot, acc=1; + void (*func)(const float&, const void*, void*) = AccumulateProduct; + std::cout<<"Which element do you choose to perform a product above it? "; + std::cin>>std::ws; + std::cin>>pivot; + list.FoldPreOrder(func, (void*)&pivot, (void*)&acc); + std::cout<<"The result of the product is "<& list){ + void (*fun)(float&, void*) = SquareAFloat; + list.MapPreOrder(fun, nullptr); + std::cout<& list){ + ulong pivot; + std::string acc = ""; + void (*func)(const std::string&, const void*, void*) = ConcatAux; + std::cout<<"Concat elements whose length is less than: "; + std::cin>>std::ws; + std::cin>>pivot; + list.FoldPreOrder(func, (void*)&pivot, (void*)&acc); + std::cout<<"The concatenated string is "<& list){ + void (*fun)(std::string&, void*) = UppercaseAString; + list.MapPreOrder(fun, nullptr); + std::cout<<"The uppercased strings are: "< generateVectorOfIntegers(){ for(ulong i = 0 ; i generateVectorOfFloat(){ for(unsigned long i = 0; i < dim; ++i){ myvec[i] = (round(distr(gen)*10000))/100; } - std::cout<<"Elements of the vector:"< generateVectorOfStrings(){ for(unsigned long i = 0; i < dim; ++i){ myvec[i] = generateRandomString(dist(gen)); } - std::cout<<"Elements of the vector:"< void ShowLastElement(lasd::List&); template void ShowElementWithASpecificIndex(lasd::List&); +template +void ShowAllElements(lasd::List&); +template +void CheckElementExists(lasd::List&); +void SumLessThan(lasd::List&); +void DoubleIntegers(lasd::List&); +void ProductMoreThan(lasd::List&); +void SquareFloats(lasd::List&); +void ConcatLessThan(lasd::List&); +void Uppercase(lasd::List&); ulong getDimension(); -/* -void ChooseDimension(ulong&); -LinearContainer GenerateRandomStructure(const ulong&); -void ViewElement(const LinearContainer&); -void PrintAllElements(const LinearContainer&); -void PrintElement(Data&, void*); // funzione richiamata dalla map -void CheckExists(const LinearContainer&); -void ChooseFoldFunction(const LinearContainer&); -void SumLessThan(const LinearContainer&, const ulong&); -void SumLessThanFold(int&, const void*, void*); -void ProductMoreThan(const LinearContainer&, const ulong&); -void ProductMoreThanFold(float&, const void*, void*); -void ConcatStringLessThan(const LinearContainer&, const ulong&); -void ConcatStringLessThanFold(string&, const void*, void*); - -//7 -void ChooseMapFunction(const LinearContainer); -void DoubleN(const LinearContainer&, const ulong&); -void DoubleNMap(int&, void*); - -void SquareN(const LinearContainer&, const ulong&); -void SquareNMap(float&, void*); - -void Uppercase(const LinearContainer&, const ulong&); -void UppercaseMap(string&, void*); -*/ - #endif diff --git a/librerie/exercise1old/build.sh b/librerie/exercise1old/build.sh deleted file mode 100755 index bbee40e..0000000 --- a/librerie/exercise1old/build.sh +++ /dev/null @@ -1,7 +0,0 @@ - -#! /bin/bash - -g++ -O3 -o main \ - zlasdtest/exercise1/simpletest.cpp zlasdtest/exercise1/fulltest.cpp \ - zlasdtest/container/container.cpp \ - zlasdtest/test.cpp zmytest/test.cpp main.cpp diff --git a/librerie/exercise1old/container/container.cpp b/librerie/exercise1old/container/container.cpp deleted file mode 100644 index 6a22d84..0000000 --- a/librerie/exercise1old/container/container.cpp +++ /dev/null @@ -1,17 +0,0 @@ - -namespace lasd { - -template -void AuxFoldExists(const Data& dat, const void* val, void* exists){ - if(dat == *((Data*)val)){ - *((bool*)exists) = true; - } -} - -template -bool FoldableContainer::Exists(const Data& dat) const noexcept{ - bool exists = false; - FoldPreOrder(&AuxFoldExists, &dat, &exists); - return exists; -} -} diff --git a/librerie/exercise1old/container/container.hpp b/librerie/exercise1old/container/container.hpp deleted file mode 100644 index 021fcc0..0000000 --- a/librerie/exercise1old/container/container.hpp +++ /dev/null @@ -1,304 +0,0 @@ - -#ifndef CONTAINER_HPP -#define CONTAINER_HPP - -/* ************************************************************************** */ - -#include -#include - -/* ************************************************************************** */ - -namespace lasd { - -/* ************************************************************************** */ - -class Container { - -private: - -protected: - - ulong size = 0; - -public: - - // Destructor - virtual ~Container() = default; - - /* ************************************************************************ */ - - // Copy assignment - Container& operator=(const Container&) = delete; // Copy assignment of abstract types should not be possible. - - // Move assignment - Container& operator=(Container&&) noexcept = delete; // Move assignment of abstract types should not be possible. - - /* ************************************************************************ */ - - // Comparison operators - bool operator==(const Container&) const noexcept = delete; // Comparison of abstract types might not be possible. - bool operator!=(const Container&) const noexcept = delete; // Comparison of abstract types might not be possible. - - /* ************************************************************************ */ - - // Specific member functions - - virtual bool Empty() const noexcept { // (concrete function should not throw exceptions) - return (size == 0); - } - - virtual ulong Size() const noexcept{ - return size; - } - - virtual void Clear() = 0; - -}; - -/* ************************************************************************** */ - -template -class LinearContainer : virtual public Container { // Must extend Container - -private: - -protected: - -public: - - // Destructor - virtual ~LinearContainer() = default; - - /* ************************************************************************ */ - - // Copy assignment - LinearContainer& operator=(const LinearContainer&) = delete; // Copy assignment of abstract types should not be possible. - - // Move assignment - LinearContainer& operator=(LinearContainer&&) = delete; // Move assignment of abstract types should not be possible. - - /* ************************************************************************ */ - - // Comparison operators - bool operator==(const LinearContainer&) const noexcept = delete; // Comparison of abstract types might not be possible. - bool operator!=(const LinearContainer&) const noexcept = delete; // Comparison of abstract types might not be possible. - - /* ************************************************************************ */ - - // Specific member functions - - virtual Data& Front() const = 0; // (concrete function must throw std::length_error when empty) - virtual Data& Back() const = 0; // (concrete function must throw std::length_error when empty) - - virtual Data& operator[](const ulong) const = 0; // (concrete function must throw std::out_of_range when out of range) - -}; - -/* ************************************************************************** */ - -template -class TestableContainer : virtual public Container { // Must extend Container - -private: - -protected: - -public: - - // Destructor - virtual ~TestableContainer() = default; - - /* ************************************************************************ */ - - // Copy assignment - TestableContainer& operator=(const TestableContainer&) = delete; // Copy assignment of abstract types should not be possible. - - // Move assignment - TestableContainer& operator=(TestableContainer&&) noexcept = delete; // Move assignment of abstract types should not be possible. - - /* ************************************************************************ */ - - // Comparison operators - bool operator==(const TestableContainer&) const noexcept = delete; // Comparison of abstract types might not be possible. - bool operator!=(const TestableContainer&) const noexcept = delete; // Comparison of abstract types might not be possible. - - /* ************************************************************************ */ - - // Specific member functions - - virtual bool Exists(const Data&) const noexcept = 0; // (concrete function should not throw exceptions) - -}; - -/* ************************************************************************** */ - -template -class MappableContainer : virtual public Container { // Must extend Container - -private: - -protected: - -public: - - // Destructor - virtual ~MappableContainer() = default; - - /* ************************************************************************ */ - - // Copy assignment - MappableContainer& operator=(const MappableContainer&) = delete; // Copy assignment of abstract types should not be possible. - - // Move assignment - MappableContainer& operator=(MappableContainer&&) noexcept = delete; // Move assignment of abstract types should not be possible. - - /* ************************************************************************ */ - - // Comparison operators - bool operator==(const MappableContainer&) const noexcept = delete; // Comparison of abstract types might not be possible. - bool operator!=(const MappableContainer&) const noexcept = delete; // Comparison of abstract types might not be possible. - - /* ************************************************************************ */ - - // Specific member functions - - typedef std::function MapFunctor; - - virtual void MapPreOrder(const MapFunctor, void*) = 0; - virtual void MapPostOrder(const MapFunctor, void*) = 0; - -}; - -/* ************************************************************************** */ - -template -class FoldableContainer : virtual public TestableContainer{ // Must extend TestableContainer - -private: - -protected: - -public: - - // Destructor - virtual ~FoldableContainer() = default; - - /* ************************************************************************ */ - - // Copy assignment - FoldableContainer& operator=(const FoldableContainer&) = delete; // Copy assignment of abstract types should not be possible. - - // Move assignment - FoldableContainer& operator=(FoldableContainer&&) noexcept = delete; // Move assignment of abstract types should not be possible. - - /* ************************************************************************ */ - - // Comparison operators - bool operator==(const FoldableContainer&) const noexcept = delete; // Comparison of abstract types might not be possible. - bool operator!=(const FoldableContainer&) const noexcept = delete; // Comparison of abstract types might not be possible. - - /* ************************************************************************ */ - - // Specific member functions - - typedef std::function FoldFunctor; - - virtual void FoldPreOrder(const FoldFunctor, const void*, void*) const = 0; - virtual void FoldPostOrder(const FoldFunctor, const void*, void*) const = 0; - - virtual bool Exists(const Data&) const noexcept override; // Override TestableContainer member - -}; - -/* ************************************************************************** */ - -template -class BreadthMappableContainer { // Must extend MappableContainer - -private: - - // ... - -protected: - - // ... - -public: - - // Destructor - // ~BreadthMappableContainer() specifiers - - /* ************************************************************************ */ - - // Copy assignment - // type operator=(argument); // Copy assignment of abstract types should not be possible. - - // Move assignment - // type operator=(argument); // Move assignment of abstract types should not be possible. - - /* ************************************************************************ */ - - // Comparison operators - // type operator==(argument) specifiers; // Comparison of abstract types might not be possible. - // type operator!=(argument) specifiers; // Comparison of abstract types might not be possible. - - /* ************************************************************************ */ - - // Specific member functions - - // using typename MappableContainer::MapFunctor; - - // type MapBreadth(arguments) specifiers; - -}; - -/* ************************************************************************** */ - -template -class BreadthFoldableContainer { // Must extend FoldableContainer - -private: - - // ... - -protected: - - // ... - -public: - - // Destructor - // ~BreadthFoldableContainer() specifiers - - /* ************************************************************************ */ - - // Copy assignment - // type operator=(argument); // Copy assignment of abstract types should not be possible. - - // Move assignment - // type operator=(argument); // Move assignment of abstract types should not be possible. - - /* ************************************************************************ */ - - // Comparison operators - // type operator==(argument) specifiers; // Comparison of abstract types might not be possible. - // type operator!=(argument) specifiers; // Comparison of abstract types might not be possible. - - /* ************************************************************************ */ - - // Specific member functions - - // using typename FoldableContainer::FoldFunctor; - - // type FoldBreadth(arguments) specifiers; - -}; - -/* ************************************************************************** */ - -} - -#include "container.cpp" - -#endif diff --git a/librerie/exercise1old/list/list.cpp b/librerie/exercise1old/list/list.cpp deleted file mode 100644 index ce55016..0000000 --- a/librerie/exercise1old/list/list.cpp +++ /dev/null @@ -1,264 +0,0 @@ -namespace lasd { - // Specific constructor - template - List::Node::Node(Data newValue){ - value = newValue; - next = nullptr; - } - - // Copy constructor - template - List::Node::Node(const Node& copyFrom){ - value = copyFrom.value; - } - - // Move constructor - template - List::Node::Node(Node&& moveFrom){ - std::move(value, moveFrom.value); - std::move(next, moveFrom.next); - } - template - List::Node::Node(Data&& moveFrom){ - std::move(value, moveFrom); - } - - // Comparison operator - template - bool List::Node::operator==(const Node& node) const noexcept{ - if(node.value == value) return true; - else return false; - } - - template - bool List::Node::operator!=(const Node& node) const noexcept{ - if(node.value != value) return true; - else return false; - } - - template - List::List(const LinearContainer& con){ - for(ulong i=0 ; i - List::List(const List& copyFrom){ - for(ulong i=0 ; i - List::List(List&& moveFrom){ - std::swap(size, moveFrom.size); - std::swap(head, moveFrom.head); - std::swap(tail, moveFrom.tail); - } - - // Destructor - template - List::~List(){ - Clear(); - } - - // Copy assignment - template - List& List::operator=(const List& copyFrom){ - if(*this != copyFrom){ - Clear(); - for(ulong i=0 ; i - List& List::operator=(List&& moveFrom) noexcept{ - if(*this != moveFrom){ - Clear(); - std::swap(size, moveFrom.size); - std::swap(head, moveFrom.head); - std::swap(tail, moveFrom.tail); - } - return *this; - } - - // Comparison operators - template - bool List::operator==(const List& list) const noexcept{ - if(this->size != list.Size()) return false; - for(ulong i=0 ; i<(this->size) ; ++i){ - if((*this)[i] != list[i]) return false; - } - return true; - } - - template - bool List::operator!=(const List& list) const noexcept{ - return !(*this == list); - } - - // Specific member functions - template - void List::InsertAtFront(const Data& data){ - struct Node* tmp = new Node(data); - tmp->next = head; - head = tmp; - size++; - if(size==1){ - tail = head; - } - } - - template - void List::InsertAtFront(Data&& data){ - struct Node* tmp = new Node(data); - tmp->next = head; - head = tmp; - size++; - if(size==1){ - tail = head; - } - } - - template - void List::RemoveFromFront(){ - if(head==nullptr){ - throw std::length_error("List is empty!"); - }else{ - struct Node* tmp = head; - head = head->next; - delete tmp; - size--; - } - } - - template - Data List::FrontNRemove(){ - if(head==nullptr){ - throw std::length_error("List is empty!"); - }else{ - Data value = head->value; - RemoveFromFront(); - return value; - } - } - - template - void List::InsertAtBack(const Data& data){ - if(size==0){ - InsertAtFront(data); - }else{ - struct Node* last = new Node(data); - tail->next = last; - tail = last; - size++; - } - } - - template - void List::InsertAtBack(Data&& data){ - if(size==0){ - InsertAtFront(data); - }else{ - struct Node* last = new Node(data); - tail->next = last; - tail = last; - size++; - } - } - - template - void List::Clear(){ - while(head!=nullptr){ - RemoveFromFront(); - } - } - - template - Data& List::Front() const{ - if(size==0){ - throw std::length_error("List is empty!"); - }else{ - return head->value; - } - } - - template - Data& List::Back() const{ - if(size==0){ - throw std::length_error("List is empty!"); - }else{ - return tail->value; - } - } - - template - Data& List::operator[](const ulong index) const{ - if(index>=size || index<0){ - throw std::out_of_range("Out of range!"); - }else{ - struct Node* tmp = head; - for(ulong i=0 ; inext; - } - return tmp->value; - } - } - - template - void List::MapPreOrder(const MapFunctor fun, void* par){ - MapPreOrder(fun, par, head); - } - - template - void List::MapPreOrder(MapFunctor function, void* par, struct Node* node){ - if(node == nullptr) - return; - function(node->value, par); - MapPreOrder(function, par, node->next); - } - - template - void List::MapPostOrder(MapFunctor function, void* par){ - MapPostOrder(function, par, head); - } - - template - void List::MapPostOrder(MapFunctor function, void* par, struct Node* node){ - if(node == nullptr) - return; - MapPostOrder(function, par, node->next); - function(node->value, par); - } - - template - void List::FoldPreOrder(FoldFunctor function, const void* constPar, void* par) const{ - FoldPreOrder(function, constPar, par, head); - } - - template - void List::FoldPreOrder(FoldFunctor function, const void* constPar, void* par, struct Node* node) const{ - if(node == nullptr) - return; - function(node->value, constPar, par); - FoldPreOrder(function, constPar, par, node->next); - } - - template - void List::FoldPostOrder(FoldFunctor function, const void* constPar, void* par) const{ - FoldPostOrder(function, constPar, par, head); -} - - template - void List::FoldPostOrder(FoldFunctor function, const void* constPar, void* par, struct Node* node) const{ - if(node == nullptr) - return; - FoldPostOrder(function, constPar, par, node->next); - function(node->value, constPar, par); - } -} diff --git a/librerie/exercise1old/list/list.hpp b/librerie/exercise1old/list/list.hpp deleted file mode 100644 index 99bf595..0000000 --- a/librerie/exercise1old/list/list.hpp +++ /dev/null @@ -1,164 +0,0 @@ - -#ifndef LIST_HPP -#define LIST_HPP - -/* ************************************************************************** */ - -#include "../container/container.hpp" - -/* ************************************************************************** */ - -namespace lasd { - -/* ************************************************************************** */ - -template -class List : virtual public LinearContainer, - virtual public MappableContainer, - virtual public FoldableContainer { // Must extend LinearContainer, MappableContainer, and FoldableContainer - -private: - -protected: - - using LinearContainer:: size; - - struct Node - { - Data value; - Node* next = nullptr; - - /* ********************************************************************** */ - - // Specific constructors - Node(Data); - - /* ********************************************************************** */ - - // Copy constructor - Node(const Node&); - - // Move constructor - Node(Node&&); - Node(Data&&); - - /* ********************************************************************** */ - - // Destructor - ~Node() = default; - - /* ********************************************************************** */ - - // Comparison operators - bool operator==(const Node&) const noexcept; - bool operator!=(const Node&) const noexcept; - }; - - struct Node* head = nullptr; - struct Node* tail = nullptr; - -public: - - // Default constructor - List() = default; - - /* ************************************************************************ */ - - // Specific constructor - List(const LinearContainer&); // A list obtained from a LinearContainer - - /* ************************************************************************ */ - - // Copy constructor - List(const List&); - - //Move constructor - List(List&&); - - /* ************************************************************************ */ - - // Destructor - ~List(); - - /* ************************************************************************ */ - - // Copy assignment - List& operator=(const List&); - - // Move assignment - List& operator=(List&&) noexcept; - - /* ************************************************************************ */ - - // Comparison operators - bool operator==(const List&) const noexcept; - bool operator!=(const List&) const noexcept; - - /* ************************************************************************ */ - - // Specific member functions - - void InsertAtFront(const Data&); // Copy of the value - void InsertAtFront(Data&&); // Move of the value - void RemoveFromFront(); // (must throw std::length_error when empty) - Data FrontNRemove(); // (must throw std::length_error when empty) - - void InsertAtBack(const Data&); // Copy of the value - void InsertAtBack(Data&&); // Move of the value - - /* ************************************************************************ */ - - // Specific member functions (inherited from Container) - - void Clear() override; // Override Container member - - /* ************************************************************************ */ - - // Specific member functions (inherited from LinearContainer) - - Data& Front() const override; // Override LinearContainer member (must throw std::length_error when empty) - Data& Back() const override; // Override LinearContainer member (must throw std::length_error when empty) - - Data& operator[](const ulong) const override; // Override LinearContainer member (must throw std::out_of_range when out of range) - - /* ************************************************************************ */ - - // Specific member functions (inherited from MappableContainer) - - using typename MappableContainer::MapFunctor; - - void MapPreOrder(const MapFunctor, void*) override; // Override MappableContainer member - void MapPostOrder(const MapFunctor, void*) override; // Override MappableContainer member - - /* ************************************************************************ */ - - // Specific member functions (inherited from FoldableContainer) - - using typename FoldableContainer::FoldFunctor; - - void FoldPreOrder(const FoldFunctor, const void*, void*) const override; // Override FoldableContainer member - void FoldPostOrder(const FoldFunctor, const void*, void*) const override; // Override FoldableContainer member - -protected: - - // Auxiliary member functions (for MappableContainer) - - void MapPreOrder(const MapFunctor, void*, struct Node*); // Accessory function executing from one point of the list onwards - void MapPostOrder(const MapFunctor, void*, struct Node*); // Accessory function executing from one point of the list onwards - - /* ************************************************************************ */ - - // Auxiliary member functions (for FoldableContainer) - - void FoldPreOrder(const FoldFunctor, const void*, void*, struct Node*) const; // Accessory function executing from one point of the list onwards - void FoldPostOrder(const FoldFunctor, const void*, void*, struct Node*) const; // Accessory function executing from one point of the list onwards - -}; - -/* ************************************************************************** */ - -} - -#include "list.cpp" - -#endif diff --git a/librerie/exercise1old/main.cpp b/librerie/exercise1old/main.cpp deleted file mode 100644 index 9c587bb..0000000 --- a/librerie/exercise1old/main.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "container/container.hpp" -#include "vector/vector.hpp" -#include "list/list.hpp" -#include "zlasdtest/test.hpp" - -#include "zmytest/test.hpp" - -/* ************************************************************************** */ - -#include - -/* ************************************************************************** */ - -int main() { - std::cout << "Lasd Libraries 2020" << std::endl; - lasdtest(); // To call in the menu of your library test! - return 0; -} diff --git a/librerie/exercise1old/vector/vector.cpp b/librerie/exercise1old/vector/vector.cpp deleted file mode 100644 index 7b7d8ef..0000000 --- a/librerie/exercise1old/vector/vector.cpp +++ /dev/null @@ -1,181 +0,0 @@ -namespace lasd { - - // Specific constructor - template - Vector::Vector(const ulong dimension){ - Elements = new Data[dimension] {}; - size = dimension; - } - - // Specific constructor - template - Vector::Vector(const LinearContainer& con){ - size = con.Size(); - Elements = new Data[size] {}; - for(ulong i ; i - Vector::Vector(const Vector& vec){ - size = vec.size; - Elements = new Data[size] {}; - for(ulong i=0 ; i - Vector::Vector(Vector&& vec) noexcept{ - std::swap(Elements, vec.Elements); - std::swap(size, vec.size); - } - - // Destructor - template - Vector::~Vector(){ - delete[] Elements; - } - - // Copy assignment - template - Vector& Vector::operator=(const Vector& vec){ - Vector* tmpvec = new Vector(vec); - std::swap(*tmpvec,*this); - delete tmpvec; - return *this; - } - - // Move assignment - template - Vector& Vector::operator=(Vector&& vec) noexcept{ - std::swap(Elements, vec.Elements); - std::swap(size, vec.size); - return *this; - } - - // Comparison operators - template - bool Vector::operator==(const Vector& vec) const noexcept{ - if(size!=vec.size) return false; - for(ulong i=0 ; i - bool Vector::operator!=(const Vector& vec) const noexcept{ - return !(*this == vec); - } - - // Specific member function - // template typename - // void Vector::Resize(const ulong newsize){ - // if(newsize == 0){ - // Clear(); - // } - // else{ - // size = newsize; - // if(newsize < size){ - // Data* tmpvec = new Data[newsize] {}; - // for(ulong i=0;i size){ - // Data* tmpvec = new Data[newsize] {}; - // for(ulong i=0;i - void Vector::Resize(const ulong newsize){ - if(newsize == 0){ - Clear(); - }else if(size != newsize){ - ulong limit = (size < newsize) ? size : newsize; - Data* TmpElements = new Data[newsize] {}; - for(ulong i = 0 ; i - void Vector::Clear(){ - delete[] Elements; - Elements = nullptr; - size = 0; - } - - template - Data& Vector::Front() const{ - if(size!=0){ - return Elements[0]; - }else{ - return std::length_error("Access to an empty vector"); - } - } - - template - Data& Vector::Back() const{ - if(size!=0){ - return Elements[size-1]; - }else{ - return std::length_error("Access to an empty vector"); - } - } - - template - Data& Vector::operator[](const ulong index) const{ - if(index < size){ - return Elements[index]; - }else{ - throw std::out_of_range("Access at index " + std::to_string(index) + " invalid because the vector size is" + std::to_string(size)); - } - } - - template - void Vector::MapPreOrder(const MapFunctor fun, void* par){ - for(ulong i = 0 ; i - void Vector::MapPostOrder(const MapFunctor fun, void* par){ - ulong i = size; - while(i>0){ - fun(Elements[--i], par); - } - } - - template - void Vector::FoldPreOrder(const FoldFunctor fun, const void* par, void* acc) const{ - for(ulong i = 0 ; i - void Vector::FoldPostOrder(const FoldFunctor fun, const void* par, void* acc) const{ - ulong i = size; - while(i>0){ - fun(Elements[--i], par, acc); - } - } diff --git a/librerie/exercise1old/vector/vector.hpp b/librerie/exercise1old/vector/vector.hpp deleted file mode 100644 index 3c25b30..0000000 --- a/librerie/exercise1old/vector/vector.hpp +++ /dev/null @@ -1,105 +0,0 @@ - -#ifndef VECTOR_HPP -#define VECTOR_HPP - -#include "../container/container.hpp" - -namespace lasd { - -template -class Vector : virtual public LinearContainer, - virtual public MappableContainer, - virtual public FoldableContainer{ // Must extend LinearContainer, MappableContainer, and FoldableContainer - -private: - -protected: - - using LinearContainer::size; - Data* Elements = nullptr; -public: - - // Default constructor - Vector() = default; - - /* ************************************************************************ */ - - // Specific constructors - Vector(const ulong); // A vector with a given initial dimension - Vector(const LinearContainer&); // A vector obtained from a LinearContainer - - /* ************************************************************************ */ - - // Copy constructor - Vector(const Vector&); - - // Move constructor - Vector(Vector&&) noexcept; - - /* ************************************************************************ */ - - // Destructor - ~Vector(); - - /* ************************************************************************ */ - - // Copy assignment - Vector& operator=(const Vector&); - - // Move assignment - Vector& operator=(Vector&&) noexcept; - - /* ************************************************************************ */ - - // Comparison operators - bool operator==(const Vector&) const noexcept; - bool operator!=(const Vector&) const noexcept; - - /* ************************************************************************ */ - - // Specific member functions - - void Resize(const ulong); // Resize the vector to a given size - - /* ************************************************************************ */ - - // Specific member functions (inherited from Container) - - void Clear() override; // Override Container member - - /* ************************************************************************ */ - - // Specific member functions (inherited from LinearContainer) - - Data& Front() const override; // Override LinearContainer member (must throw std::length_error when empty) - Data& Back() const override; // Override LinearContainer member (must throw std::length_error when empty) - - Data& operator[](const ulong) const override; // Override LinearContainer member (must throw std::out_of_range when out of range) - - /* ************************************************************************ */ - - // Specific member functions (inherited from MappableContainer) - - using typename MappableContainer::MapFunctor; - - void MapPreOrder(const MapFunctor, void*) override; // Override MappableContainer member - void MapPostOrder(const MapFunctor, void*) override; // Override MappableContainer member - - /* ************************************************************************ */ - - // Specific member functions (inherited from FoldableContainer) - - using typename FoldableContainer::FoldFunctor; - - void FoldPreOrder(const FoldFunctor, const void*, void*) const override; // Override FoldableContainer member - void FoldPostOrder(const FoldFunctor, const void*, void*) const override; // Override FoldableContainer member - -}; - -/* ************************************************************************** */ - -} - -#include "vector.cpp" - -#endif diff --git a/librerie/exercise1old/zlasdtest/container/container.cpp b/librerie/exercise1old/zlasdtest/container/container.cpp deleted file mode 100644 index 0f37c81..0000000 --- a/librerie/exercise1old/zlasdtest/container/container.cpp +++ /dev/null @@ -1,49 +0,0 @@ - -#include - -/* ************************************************************************** */ - -#include "../../container/container.hpp" - -/* ************************************************************************** */ - -// Container member functions! - -void Empty(uint& testnum, uint& testerr, const lasd::Container& con, bool chk) { - bool tst; - testnum++; - std::cout << " " << testnum << " The container is " << ((tst = con.Empty()) ? "" : "not ") << "empty: "; - std::cout << ((tst = (tst == chk)) ? "Correct" : "Error") << "!" << std::endl; - testerr += (1 - (uint) tst); -} - -void Size(uint& testnum, uint& testerr, const lasd::Container& con, bool chk, ulong siz) { - bool tst; - testnum++; - std::cout << " " << testnum << " The container has size " << con.Size() << ": "; - std::cout << ((tst = ((con.Size() == siz) == chk)) ? "Correct" : "Error") << "!" << std::endl; - testerr += (1 - (uint) tst); -} - -/* ************************************************************************** */ - -// Auxiliary functions for MappableContainer! - -void MapStringAppend(std::string& dat, void* par) { - dat.append(*((std::string*) par)); -} - -/* ************************************************************************** */ - -// Auxiliary functions for FoldableContainer! - -void FoldParity(const int& dat, const void* _, void* acc) { - *((int*) acc) += dat; - *((int*) acc) %= 2; -} - -void FoldStringConcatenate(const std::string& dat, const void* _, void* acc) { - ((std::string*) acc)->append(dat); -} - -/* ************************************************************************** */ diff --git a/librerie/exercise1old/zlasdtest/container/container.hpp b/librerie/exercise1old/zlasdtest/container/container.hpp deleted file mode 100644 index 7b12b44..0000000 --- a/librerie/exercise1old/zlasdtest/container/container.hpp +++ /dev/null @@ -1,301 +0,0 @@ - -#ifndef CONTAINERTEST_HPP -#define CONTAINERTEST_HPP - -#include "../../container/container.hpp" - -/* ************************************************************************** */ - -// Container member functions! - -void Empty(uint&, uint&, const lasd::Container&, bool); - -void Size(uint&, uint&, const lasd::Container&, bool, ulong); - -/* ************************************************************************** */ - -// LinearContainer member functions! - -template -void GetFront(uint& testnum, uint& testerr, const lasd::LinearContainer& con, bool chk, const Data& val) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " The front of the linear container is \"" << con.Front() << "\": "; - std::cout << ((tst = ((con.Front() == val) == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::length_error exc) { - std::cout << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - tst = true; - std::cout << std::endl << "Wrong std::exception: " << exc.what() << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void SetFront(uint& testnum, uint& testerr, const lasd::LinearContainer& con, bool chk, const Data& val) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " Setting the front of the linear container to \"" << val << "\": "; - con.Front() = val; - std::cout << ((tst = chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::length_error exc) { - std::cout << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - tst = true; - std::cout << std::endl << "Wrong std::exception: " << exc.what() << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void GetBack(uint& testnum, uint& testerr, const lasd::LinearContainer& con, bool chk, const Data& val) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " The back of the linear container is \"" << con.Back() << "\": "; - std::cout << ((tst = ((con.Back() == val) == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::length_error exc) { - std::cout << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - tst = true; - std::cout << std::endl << "Wrong std::exception: " << exc.what() << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void SetBack(uint& testnum, uint& testerr, const lasd::LinearContainer& con, bool chk, const Data& val) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " Setting the back of the linear container to \"" << val << "\": "; - con.Back() = val; - std::cout << ((tst = chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::length_error exc) { - std::cout << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - tst = true; - std::cout << std::endl << "Wrong std::exception: " << exc.what() << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void SetAt(uint& testnum, uint& testerr, lasd::LinearContainer& con, bool chk, const ulong& ind, const Data& val) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " Set of the linear container at index \"" << ind << "\" with value \"" << val << "\": "; - con[ind] = val; - std::cout << ((tst = chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::out_of_range exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - tst = true; - std::cout << std::endl << "Wrong std::exception: " << exc.what() << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void GetAt(uint& testnum, uint& testerr, lasd::LinearContainer& con, bool chk, const ulong& ind, const Data& val) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " Get of the linear container at index \"" << ind << "\" with value \"" << con[ind] << "\": "; - std::cout << ((tst = ((con[ind] == val) == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::out_of_range exc) { - std::cout << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - tst = true; - std::cout << std::endl << "Wrong std::exception: " << exc.what() << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -/* ************************************************************************** */ - -// TestableContainer member functions! - -template -void Exists(uint& testnum, uint& testerr, const lasd::TestableContainer& con, bool chk, const Data& val) { - bool tst; - testnum++; - std::cout << " " << testnum << " Data \"" << val << "\" " << ((tst = con.Exists(val)) ? "does" : "does not") << " exist: "; - std::cout << ((tst = (tst == chk)) ? "Correct" : "Error") << "!" << std::endl; - testerr += (1 - (uint) tst); -} - -/* ************************************************************************** */ - -// MappableContainer member functions! - -template -void MapPreOrder(uint& testnum, uint& testerr, lasd::MappableContainer& con, bool chk, typename lasd::MappableContainer::MapFunctor fun, const Parameter& inipar) { - bool tst = true; - testnum++; - Parameter par = {inipar}; - try { - std::cout << " " << testnum << " Executing map in pre order - "; - con.MapPreOrder(fun, &par); - std::cout << ": " << ((tst = chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void MapPostOrder(uint& testnum, uint& testerr, lasd::MappableContainer& con, bool chk, typename lasd::MappableContainer::MapFunctor fun, const Parameter& inipar) { - bool tst = true; - testnum++; - Parameter par = {inipar}; - try { - std::cout << " " << testnum << " Executing map in post order - "; - con.MapPostOrder(fun, &par); - std::cout << ": " << ((tst = chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void MapPrint(const Data& dat, void* _) { - std::cout << dat << " "; -} - -template -void MapIncrement(Data& dat, void* _) { - dat++; -} - -template -void MapIncrementNPrint(Data& dat, void* _) { - std::cout << dat++ << "->" << dat << "; "; -} - -template -void MapDouble(Data& dat, void* _) { - dat *= 2; -} - -template -void MapDoubleNPrint(Data& dat, void* _) { - std::cout << dat << "->" << (dat *= 2) << "; "; -} - -template -void MapInvert(Data& dat, void* _) { - dat = -dat; -} - -template -void MapInvertNPrint(Data& dat, void* _) { - std::cout << dat << "->" << (dat = -dat) << "; "; -} - -template -void MapParityInvert(Data& dat, void* _) { - if (dat % 2 != 0) { dat = -dat; } -} - -void MapStringAppend(std::string&, void*); - -/* ************************************************************************** */ - -// FoldableContainer member functions! - -template -void FoldPreOrder(uint& testnum, uint& testerr, const lasd::FoldableContainer& con, bool chk, typename lasd::FoldableContainer::FoldFunctor fun, const Parameter& inipar, const Value& inival, const Value& finval) { - bool tst; - testnum++; - Parameter par = {inipar}; - Value val = inival; - try { - std::cout << " " << testnum << " Executing fold in pre order - "; - con.FoldPreOrder(fun, &par, &val); - std::cout << "obtained value is \"" << val << "\": "; - std::cout << ((tst = ((val == finval) == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void FoldPostOrder(uint& testnum, uint& testerr, const lasd::FoldableContainer& con, bool chk, typename lasd::FoldableContainer::FoldFunctor fun, const Parameter& inipar, const Value& inival, const Value& finval) { - bool tst; - testnum++; - Parameter par = {inipar}; - Value val = inival; - try { - std::cout << " " << testnum << " Executing fold in post order - "; - con.FoldPostOrder(fun, &par, &val); - std::cout << "obtained value is \"" << val << "\": "; - std::cout << ((tst = ((val == finval) == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void FoldAdd(const Data& dat, const void* _, void* acc) { - *((Data*) acc) += dat; -} - -template -void FoldMultiply(const Data& dat, const void* _, void* acc) { - *((Data*) acc) *= dat; -} - -void FoldParity(const int&, const void*, void*); - -void FoldStringConcatenate(const std::string&, const void*, void*); - -/* ************************************************************************** */ - -// BreadthMappableContainer member functions! - -template -void MapBreadth(uint& testnum, uint& testerr, lasd::BreadthMappableContainer& con, bool chk, typename lasd::BreadthMappableContainer::MapFunctor fun, const Parameter& inipar) { - bool tst = true; - testnum++; - Parameter par = {inipar}; - try { - std::cout << " " << testnum << " Executing map in pre order - "; - con.MapBreadth(fun, &par); - std::cout << ": " << ((tst = chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -/* ************************************************************************** */ - -// BreadthFoldableContainer member functions! - -template -void FoldBreadth(uint& testnum, uint& testerr, const lasd::BreadthFoldableContainer& con, bool chk, typename lasd::BreadthFoldableContainer::FoldFunctor fun, const Parameter& inipar, const Value& inival, const Value& finval) { - bool tst; - testnum++; - Parameter par = {inipar}; - Value val = inival; - try { - std::cout << " " << testnum << " Executing fold in post order - "; - con.FoldBreadth(fun, &par, &val); - std::cout << "obtained value is \"" << val << "\": "; - std::cout << ((tst = ((val == finval) == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -/* ************************************************************************** */ - -#endif diff --git a/librerie/exercise1old/zlasdtest/exercise1/fulltest.cpp b/librerie/exercise1old/zlasdtest/exercise1/fulltest.cpp deleted file mode 100644 index 27f84be..0000000 --- a/librerie/exercise1old/zlasdtest/exercise1/fulltest.cpp +++ /dev/null @@ -1,3 +0,0 @@ - -void testFullExercise1() { -} diff --git a/librerie/exercise1old/zlasdtest/exercise1/simpletest.cpp b/librerie/exercise1old/zlasdtest/exercise1/simpletest.cpp deleted file mode 100644 index 8fbc655..0000000 --- a/librerie/exercise1old/zlasdtest/exercise1/simpletest.cpp +++ /dev/null @@ -1,447 +0,0 @@ - -#include - -/* ************************************************************************** */ - -#include "../container/container.hpp" - -#include "../vector/vector.hpp" - -#include "../list/list.hpp" - -/* ************************************************************************** */ - -using namespace std; - -/* ************************************************************************** */ - -void stestVectorInt(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - cout << endl << "Begin of Vector Test:" << endl; - try { - { - lasd::Vector vec; - Empty(loctestnum, loctesterr, vec, true); - - GetFront(loctestnum, loctesterr, vec, false, 0); - GetBack(loctestnum, loctesterr, vec, false, 0); - SetAt(loctestnum, loctesterr, vec, false, 1, 0); - GetAt(loctestnum, loctesterr, vec, false, 2, 0); - - Exists(loctestnum, loctesterr, vec, false, 0); - - MapPreOrder(loctestnum, loctesterr, vec, true, &MapPrint, 0); - MapPostOrder(loctestnum, loctesterr, vec, true, &MapPrint, 0); - - FoldPreOrder(loctestnum, loctesterr, vec, true, &FoldAdd, 0, 0, 0); - FoldPostOrder(loctestnum, loctesterr, vec, true, &FoldAdd, 0, 0, 0); - } - { - lasd::Vector vec(3); - Empty(loctestnum, loctesterr, vec, false); - Size(loctestnum, loctesterr, vec, true, 3); - - SetAt(loctestnum, loctesterr, vec, true, 0, 4); - SetAt(loctestnum, loctesterr, vec, true, 1, 3); - SetAt(loctestnum, loctesterr, vec, true, 2, 1); - - GetFront(loctestnum, loctesterr, vec, true, 4); - GetBack(loctestnum, loctesterr, vec, true, 1); - - SetFront(loctestnum, loctesterr, vec, true, 5); - SetBack(loctestnum, loctesterr, vec, true, 4); - - Exists(loctestnum, loctesterr, vec, true, 4); - - MapPreOrder(loctestnum, loctesterr, vec, true, &MapPrint, 0); - MapPostOrder(loctestnum, loctesterr, vec, true, &MapPrint, 0); - FoldPreOrder(loctestnum, loctesterr, vec, true, &FoldAdd, 0, 0, 12); - FoldPostOrder(loctestnum, loctesterr, vec, true, &FoldMultiply, 0, 1, 60); - - vec.Resize(2); - FoldPostOrder(loctestnum, loctesterr, vec, true, &FoldMultiply, 0, 1, 15); - } - } catch(...) { - loctestnum++; loctesterr++; - cout << endl << "Unmanaged error! " << endl; - } - cout << "End of Vector Test! (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; - testnum += loctestnum; - testerr += loctesterr; -} - -void stestVectorDouble(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - cout << endl << "Begin of Vector Test:" << endl; - try { - lasd::Vector vec(3); - Empty(loctestnum, loctesterr, vec, false); - Size(loctestnum, loctesterr, vec, true, 3); - - SetAt(loctestnum, loctesterr, vec, true, 0, 5.5); - SetAt(loctestnum, loctesterr, vec, true, 1, 3.3); - SetAt(loctestnum, loctesterr, vec, true, 2, 1.1); - - GetFront(loctestnum, loctesterr, vec, true, 5.5); - GetBack(loctestnum, loctesterr, vec, true, 1.1); - - Exists(loctestnum, loctesterr, vec, true, 3.3); - - FoldPreOrder(loctestnum, loctesterr, vec, true, &FoldAdd, 0.0, 0.0, 9.9); - FoldPostOrder(loctestnum, loctesterr, vec, true, &FoldMultiply, 0.0, 1.0, 19.965); - } catch(...) { - loctestnum++; loctesterr++; - cout << endl << "Unmanaged error! " << endl; - } - cout << "End of Vector Test! (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; - testnum += loctestnum; - testerr += loctesterr; -} - -void stestVectorString(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - cout << endl << "Begin of Vector Test:" << endl; - try { - lasd::Vector vec(2); - Empty(loctestnum, loctesterr, vec, false); - Size(loctestnum, loctesterr, vec, true, 2); - - SetAt(loctestnum, loctesterr, vec, true, 0, string("A")); - SetAt(loctestnum, loctesterr, vec, true, 1, string("B")); - - GetFront(loctestnum, loctesterr, vec, true, string("A")); - GetBack(loctestnum, loctesterr, vec, true, string("B")); - - Exists(loctestnum, loctesterr, vec, true, string("A")); - - MapPreOrder(loctestnum, loctesterr, vec, true, &MapStringAppend, string(" ")); - MapPreOrder(loctestnum, loctesterr, vec, true, &MapPrint, 0); - FoldPreOrder(loctestnum, loctesterr, vec, true, &FoldStringConcatenate, string(""), string("X"), string("XA B ")); - FoldPostOrder(loctestnum, loctesterr, vec, true, &FoldStringConcatenate, string(""), string("X"), string("XB A ")); - - Exists(loctestnum, loctesterr, vec, false, string("A")); - - lasd::Vector copvec(vec); - EqualVector(loctestnum, loctesterr, vec, copvec, true); - MapPreOrder(loctestnum, loctesterr, vec, true, &MapStringAppend, string("!")); - NonEqualVector(loctestnum, loctesterr, vec, copvec, true); - - copvec = std::move(vec); - FoldPreOrder(loctestnum, loctesterr, copvec, true, &FoldStringConcatenate, string(""), string("?"), string("?A !B !")); - - lasd::Vector movvec(std::move(vec)); - FoldPreOrder(loctestnum, loctesterr, movvec, true, &FoldStringConcatenate, string(""), string("?"), string("?A B ")); - SetAt(loctestnum, loctesterr, vec, false, 1, string("")); - vec.Resize(1); - SetAt(loctestnum, loctesterr, vec, true, 0, string("X")); - - movvec.Clear(); - Empty(loctestnum, loctesterr, movvec, true); - } catch(...) { - loctestnum++; loctesterr++; - cout << endl << "Unmanaged error! " << endl; - } - cout << "End of Vector Test! (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; - testnum += loctestnum; - testerr += loctesterr; -} - -void stestVector(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - stestVectorInt(loctestnum, loctesterr); - stestVectorDouble(loctestnum, loctesterr); - stestVectorString(loctestnum, loctesterr); - testnum += loctestnum; - testerr += loctesterr; - cout << endl << "Exercise 1 - Vector (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; -} - -/* ************************************************************************** */ - -void stestListInt(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - cout << endl << "Begin of List Test:" << endl; - try { - lasd::List lst; - Empty(loctestnum, loctesterr, lst, true); - Size(loctestnum, loctesterr, lst, true, 0); - - GetFront(loctestnum, loctesterr, lst, false, 0); - GetBack(loctestnum, loctesterr, lst, false, 0); - - Exists(loctestnum, loctesterr, lst, false, 0); - - MapPreOrder(loctestnum, loctesterr, lst, true, &MapPrint, 0); - MapPostOrder(loctestnum, loctesterr, lst, true, &MapPrint, 0); - FoldPreOrder(loctestnum, loctesterr, lst, true, &FoldAdd, 0, 0, 0); - FoldPostOrder(loctestnum, loctesterr, lst, true, &FoldAdd, 0, 0, 0); - - RemoveFromFront(loctestnum, loctesterr, lst, false); - FrontNRemove(loctestnum, loctesterr, lst, false, 0); - - InsertAtBack(loctestnum, loctesterr, lst, true, 4); - InsertAtFront(loctestnum, loctesterr, lst, true, 5); - InsertAtFront(loctestnum, loctesterr, lst, true, 9); - InsertAtBack(loctestnum, loctesterr, lst, true, 2); - InsertAtFront(loctestnum, loctesterr, lst, true, 1); - - GetFront(loctestnum, loctesterr, lst, true, 1); - GetBack(loctestnum, loctesterr, lst, true, 2); - SetFront(loctestnum, loctesterr, lst, true, 2); - SetBack(loctestnum, loctesterr, lst, true, 6); - - GetAt(loctestnum, loctesterr, lst, true, 3, 4); - SetAt(loctestnum, loctesterr, lst, true, 3, 3); - - Exists(loctestnum, loctesterr, lst, false, 4); - - MapPreOrder(loctestnum, loctesterr, lst, true, &MapPrint, 0); - MapPostOrder(loctestnum, loctesterr, lst, true, &MapPrint, 0); - FoldPreOrder(loctestnum, loctesterr, lst, true, &FoldAdd, 0, 0, 25); - FoldPostOrder(loctestnum, loctesterr, lst, true, &FoldMultiply, 0, 1, 1620); - - RemoveFromFront(loctestnum, loctesterr, lst, true); - FrontNRemove(loctestnum, loctesterr, lst, true, 9); - FoldPostOrder(loctestnum, loctesterr, lst, true, &FoldMultiply, 0, 1, 90); - - lasd::List coplst(lst); - EqualList(loctestnum, loctesterr, lst, coplst, true); - MapPreOrder(loctestnum, loctesterr, lst, true, &MapIncrement, 0); - NonEqualList(loctestnum, loctesterr, lst, coplst, true); - - InsertAtFront(loctestnum, loctesterr, lst, true, 0); - InsertAtBack(loctestnum, loctesterr, lst, true, 0); - NonEqualList(loctestnum, loctesterr, lst, coplst, true); - coplst = lst; - EqualList(loctestnum, loctesterr, lst, coplst, true); - - RemoveFromFront(loctestnum, loctesterr, coplst, true); - FrontNRemove(loctestnum, loctesterr, coplst, true, 6); - coplst = std::move(lst); - FoldPreOrder(loctestnum, loctesterr, lst, true, &FoldAdd, 0, 0, 11); - FoldPreOrder(loctestnum, loctesterr, coplst, true, &FoldAdd, 0, 0, 17); - - lasd::List movlst(std::move(lst)); - MapPreOrder(loctestnum, loctesterr, movlst, true, &MapIncrement, 0); - FoldPreOrder(loctestnum, loctesterr, movlst, true, &FoldAdd, 0, 0, 14); - - movlst.Clear(); - Empty(loctestnum, loctesterr, movlst, true); - Size(loctestnum, loctesterr, movlst, true, 0); - } catch(...) { - loctestnum++; loctesterr++; - cout << endl << "Unmanaged error! " << endl; - } - cout << "End of List Test! (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; - testnum += loctestnum; - testerr += loctesterr; -} - -void stestListDouble(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - cout << endl << "Begin of List Test:" << endl; - try { - lasd::List lst; - Empty(loctestnum, loctesterr, lst, true); - Size(loctestnum, loctesterr, lst, true, 0); - - InsertAtBack(loctestnum, loctesterr, lst, true, -2.5); - InsertAtBack(loctestnum, loctesterr, lst, true, 2.5); - - lst.Clear(); - - InsertAtBack(loctestnum, loctesterr, lst, true, 0.5); - InsertAtFront(loctestnum, loctesterr, lst, true, 3.3); - InsertAtFront(loctestnum, loctesterr, lst, true, 5.5); - InsertAtBack(loctestnum, loctesterr, lst, true, 1.1); - - GetFront(loctestnum, loctesterr, lst, true, 5.5); - GetBack(loctestnum, loctesterr, lst, true, 1.1); - - Exists(loctestnum, loctesterr, lst, false, 0.0); - - MapPreOrder(loctestnum, loctesterr, lst, true, &MapPrint, 0); - MapPostOrder(loctestnum, loctesterr, lst, true, &MapPrint, 0); - FoldPreOrder(loctestnum, loctesterr, lst, true, &FoldAdd, 0.0, 0.0, 10.4); - FoldPostOrder(loctestnum, loctesterr, lst, true, &FoldMultiply, 0.0, 1.0, 9.9825); - } catch(...) { - loctestnum++; loctesterr++; - cout << endl << "Unmanaged error! " << endl; - } - cout << "End of List Test! (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; - testnum += loctestnum; - testerr += loctesterr; -} - -void stestListString(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - cout << endl << "Begin of List Test:" << endl; - try { - lasd::List lst; - Empty(loctestnum, loctesterr, lst, true); - Size(loctestnum, loctesterr, lst, true, 0); - - InsertAtFront(loctestnum, loctesterr, lst, true, string("A")); - InsertAtBack(loctestnum, loctesterr, lst, true, string("B")); - - GetFront(loctestnum, loctesterr, lst, true, string("A")); - GetBack(loctestnum, loctesterr, lst, true, string("B")); - - Exists(loctestnum, loctesterr, lst, true, string("B")); - - MapPreOrder(loctestnum, loctesterr, lst, true, &MapStringAppend, string(" ")); - MapPreOrder(loctestnum, loctesterr, lst, true, &MapPrint, 0); - FoldPreOrder(loctestnum, loctesterr, lst, true, &FoldStringConcatenate, string(""), string("X"), string("XA B ")); - FoldPostOrder(loctestnum, loctesterr, lst, true, &FoldStringConcatenate, string(""), string("X"), string("XB A ")); - - Exists(loctestnum, loctesterr, lst, false, string("B")); - - lasd::List coplst(lst); - EqualList(loctestnum, loctesterr, lst, coplst, true); - RemoveFromFront(loctestnum, loctesterr, coplst, true); - NonEqualList(loctestnum, loctesterr, lst, coplst, true); - - lst = coplst; - EqualList(loctestnum, loctesterr, lst, coplst, true); - InsertAtBack(loctestnum, loctesterr, lst, true, string("A")); - InsertAtFront(loctestnum, loctesterr, lst, true, string("C")); - NonEqualList(loctestnum, loctesterr, lst, coplst, true); - - coplst = std::move(lst); - FoldPreOrder(loctestnum, loctesterr, coplst, true, &FoldStringConcatenate, string(""), string("?"), string("?CB A")); - } catch(...) { - loctestnum++; loctesterr++; - cout << endl << "Unmanaged error! " << endl; - } - cout << "End of List Test! (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; - testnum += loctestnum; - testerr += loctesterr; -} - -void stestList(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - stestListInt(loctestnum, loctesterr); - stestListDouble(loctestnum, loctesterr); - stestListString(loctestnum, loctesterr); - testnum += loctestnum; - testerr += loctesterr; - cout << endl << "Exercise 1 - List (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; -} - -/* ************************************************************************** */ - -void stestVectorListInt(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - cout << endl << "Begin of Vector/List Test:" << endl; - try { - lasd::Vector vec(3); - SetAt(loctestnum, loctesterr, vec, true, 0, -1); - SetAt(loctestnum, loctesterr, vec, true, 1, 0); - SetAt(loctestnum, loctesterr, vec, true, 2, 1); - - lasd::List lst; - InsertAtFront(loctestnum, loctesterr, lst, true, 1); - InsertAtFront(loctestnum, loctesterr, lst, true, 0); - InsertAtFront(loctestnum, loctesterr, lst, true, -1); - - lasd::Vector copvec(lst); - EqualVector(loctestnum, loctesterr, vec, copvec, true); - lasd::Vector copvecx(vec); - EqualVector(loctestnum, loctesterr, copvecx, copvec, true); - - lasd::List coplst(vec); - EqualList(loctestnum, loctesterr, lst, coplst, true); - lasd::List coplstx(lst); - EqualList(loctestnum, loctesterr, coplstx, coplst, true); - } catch(...) { - loctestnum++; loctesterr++; - cout << endl << "Unmanaged error! " << endl; - } - cout << "End of Vector/List Test! (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; - testnum += loctestnum; - testerr += loctesterr; -} - -void stestVectorListDouble(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - cout << endl << "Begin of Vector/List Test:" << endl; - try { - lasd::Vector vec(3); - SetAt(loctestnum, loctesterr, vec, true, 0, -0.5); - SetAt(loctestnum, loctesterr, vec, true, 1, 0.0); - SetAt(loctestnum, loctesterr, vec, true, 2, 0.5); - - lasd::List lst; - InsertAtBack(loctestnum, loctesterr, lst, true, -0.5); - InsertAtBack(loctestnum, loctesterr, lst, true, 0.0); - InsertAtBack(loctestnum, loctesterr, lst, true, 0.5); - - lasd::Vector copvec(lst); - EqualVector(loctestnum, loctesterr, vec, copvec, true); - lasd::Vector copvecx(vec); - EqualVector(loctestnum, loctesterr, copvecx, copvec, true); - - lasd::List coplst(vec); - EqualList(loctestnum, loctesterr, lst, coplst, true); - lasd::List coplstx(lst); - EqualList(loctestnum, loctesterr, coplstx, coplst, true); - } catch(...) { - loctestnum++; loctesterr++; - cout << endl << "Unmanaged error! " << endl; - } - cout << "End of Vector/List Test! (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; - testnum += loctestnum; - testerr += loctesterr; -} - -void stestVectorListString(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - cout << endl << "Begin of Vector/List Test:" << endl; - try { - lasd::Vector vec(3); - SetAt(loctestnum, loctesterr, vec, true, 0, string("A")); - SetAt(loctestnum, loctesterr, vec, true, 1, string("B")); - SetAt(loctestnum, loctesterr, vec, true, 2, string("C")); - - lasd::List lst; - InsertAtFront(loctestnum, loctesterr, lst, true, string("B")); - InsertAtBack(loctestnum, loctesterr, lst, true, string("C")); - InsertAtFront(loctestnum, loctesterr, lst, true, string("A")); - - lasd::Vector copvec(lst); - EqualVector(loctestnum, loctesterr, vec, copvec, true); - lasd::Vector copvecx(vec); - EqualVector(loctestnum, loctesterr, copvecx, copvec, true); - - lasd::List coplst(vec); - EqualList(loctestnum, loctesterr, lst, coplst, true); - lasd::List coplstx(lst); - EqualList(loctestnum, loctesterr, coplstx, coplst, true); - } catch(...) { - loctestnum++; loctesterr++; - cout << endl << "Unmanaged error! " << endl; - } - cout << "End of Vector/List Test! (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; - testnum += loctestnum; - testerr += loctesterr; -} - -void stestVectorList(uint& testnum, uint& testerr) { - uint loctestnum = 0, loctesterr = 0; - stestVectorListInt(loctestnum, loctesterr); - stestVectorListDouble(loctestnum, loctesterr); - stestVectorListString(loctestnum, loctesterr); - testnum += loctestnum; - testerr += loctesterr; - cout << endl << "Exercise 1 - Vector/List (Errors/Tests: " << loctesterr << "/" << loctestnum << ")" << endl; -} - -/* ************************************************************************** */ - -void testSimpleExercise1() { - uint testnum = 0, testerr = 0; - stestVector(testnum, testerr); - stestList(testnum, testerr); - stestVectorList(testnum, testerr); - cout << endl << "Exercise 1 (Simple Test) (Errors/Tests: " << testerr << "/" << testnum << ")" << endl; -} diff --git a/librerie/exercise1old/zlasdtest/exercise1/test.hpp b/librerie/exercise1old/zlasdtest/exercise1/test.hpp deleted file mode 100644 index c151dcf..0000000 --- a/librerie/exercise1old/zlasdtest/exercise1/test.hpp +++ /dev/null @@ -1,13 +0,0 @@ - -#ifndef EX1TEST_HPP -#define EX1TEST_HPP - -/* ************************************************************************** */ - -void testSimpleExercise1(); - -void testFullExercise1(); - -/* ************************************************************************** */ - -#endif diff --git a/librerie/exercise1old/zlasdtest/list/list.hpp b/librerie/exercise1old/zlasdtest/list/list.hpp deleted file mode 100644 index 94fbe48..0000000 --- a/librerie/exercise1old/zlasdtest/list/list.hpp +++ /dev/null @@ -1,92 +0,0 @@ - -#ifndef LISTTEST_HPP -#define LISTTEST_HPP - -#include "../../list/list.hpp" - -/* ************************************************************************** */ - -template -void InsertAtFront(uint& testnum, uint& testerr, lasd::List& lst, bool chk, const Data& val) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " Insert at the front of the list the value \"" << val << "\": "; - lst.InsertAtFront(val); - std::cout << ((tst = chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void RemoveFromFront(uint& testnum, uint& testerr, lasd::List& lst, bool chk) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " Remove from the list of \"" << lst.Front() << "\": "; - lst.RemoveFromFront(); - std::cout << ((tst = chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::length_error exc) { - std::cout << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void FrontNRemove(uint& testnum, uint& testerr, lasd::List& lst, bool chk, const Data& val) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " FrontNRemove from the list of \"" << lst.Front() << "\": "; - std::cout << ((tst = ((lst.FrontNRemove() == val) == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::length_error exc) { - std::cout << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void InsertAtBack(uint& testnum, uint& testerr, lasd::List& lst, bool chk, const Data& val) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " Insert at the back of the list the value \"" << val << "\": "; - lst.InsertAtBack(val); - std::cout << ((tst = chk) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void EqualList(uint& testnum, uint& testerr, const lasd::List& lst1, const lasd::List& lst2, bool chk) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " The two lists are " << ((tst = (lst1 == lst2)) ? "" : "not ") << "equal: "; - std::cout << ((tst = (tst == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void NonEqualList(uint& testnum, uint& testerr, const lasd::List& lst1, const lasd::List& lst2, bool chk) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " The two lists are " << ((tst = (lst1 != lst2)) ? "not " : "") << "equal: "; - std::cout << ((tst = (tst == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -/* ************************************************************************** */ - -#endif diff --git a/librerie/exercise1old/zlasdtest/test.cpp b/librerie/exercise1old/zlasdtest/test.cpp deleted file mode 100644 index faa5bf0..0000000 --- a/librerie/exercise1old/zlasdtest/test.cpp +++ /dev/null @@ -1,17 +0,0 @@ - -#include "./exercise1/test.hpp" - -/* ************************************************************************** */ - -#include - -using namespace std; - -/* ************************************************************************** */ - -void lasdtest() { - cout << endl << "~*~#~*~ Welcome to the LASD Test Suite ~*~#~*~ " << endl; - testSimpleExercise1(); - testFullExercise1(); - cout << endl << "Goodbye!" << endl; -} diff --git a/librerie/exercise1old/zlasdtest/test.hpp b/librerie/exercise1old/zlasdtest/test.hpp deleted file mode 100644 index a2fca61..0000000 --- a/librerie/exercise1old/zlasdtest/test.hpp +++ /dev/null @@ -1,11 +0,0 @@ - -#ifndef LASDTEST_HPP -#define LASDTEST_HPP - -/* ************************************************************************** */ - -void lasdtest(); - -/* ************************************************************************** */ - -#endif diff --git a/librerie/exercise1old/zlasdtest/vector/vector.hpp b/librerie/exercise1old/zlasdtest/vector/vector.hpp deleted file mode 100644 index bb0ccf6..0000000 --- a/librerie/exercise1old/zlasdtest/vector/vector.hpp +++ /dev/null @@ -1,37 +0,0 @@ - -#ifndef VECTORTEST_HPP -#define VECTORTEST_HPP - -#include "../../vector/vector.hpp" - -/* ************************************************************************** */ - -template -void EqualVector(uint& testnum, uint& testerr, const lasd::Vector& vec1, const lasd::Vector& vec2, bool chk) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " The two vectors are " << ((tst = (vec1 == vec2)) ? "" : "not ") << "equal: "; - std::cout << ((tst = (tst == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -template -void NonEqualVector(uint& testnum, uint& testerr, const lasd::Vector& vec1, const lasd::Vector& vec2, bool chk) { - bool tst; - testnum++; - try { - std::cout << " " << testnum << " The two vectors are " << ((tst = (vec1 != vec2)) ? "not " : "") << "equal: "; - std::cout << ((tst = (tst == chk)) ? "Correct" : "Error") << "!" << std::endl; - } catch(std::exception exc) { - std::cout << "\"" << exc.what() << "\": " << ((tst = !chk) ? "Correct" : "Error") << "!" << std::endl; - } - testerr += (1 - (uint) tst); -} - -/* ************************************************************************** */ - -#endif diff --git a/librerie/exercise1old/zmytest/test.cpp b/librerie/exercise1old/zmytest/test.cpp deleted file mode 100644 index ae73e4d..0000000 --- a/librerie/exercise1old/zmytest/test.cpp +++ /dev/null @@ -1,70 +0,0 @@ -void menu(){ - unsigned short int choice; - DataStructure chosenDataStructure; - DataType chosenDataType; - do{ - std::cout<<"1. Use your tests (to be used by the professor)"<>std::ws; - std::cin>>choice; - }while(choice!=1 && choice!=2); - - switch(choice){ - case 1: - lasdtest(); - break; - case 2: - chosenDataStructure = ChooseDataStructure(); - chosenDataType = ChooseDataType(); - break; - default: - std::cout<<"An error has occurred"<>std::ws; - std::cin>>choice; - }while(choice!=1 && choice!=2); - if(choice == 1) - return DataStructure::vector; - else if(choice == 2) - return DataStructure::list; -} - -DataType ChooseDataType(){ - unsigned short int choice; - do{ - std::cout<<"1. Integer"<>std::ws; - std::cin>>choice; - }while(!(choice>0 && choice<4)); - if(choice==1) - return DataType::integer; - else if(choice==2) - return DataType::ddouble; - else if(choice==3) - return DataType::sstring; -} -void UseChosenType(DataStructure chosenDataStructure, DataType chosenDataType){ - std::cout<<"\tTest on "; - if(chosenDataStructure == DataStructure::vector) - std::cout<<"vector of "; - else if(chosenDataStructure == DataStructure::list) - std::cout<<"list of "; - - if(chosenDataType == DataType::integer) - std::cout<<" integers"< GenerateRandomStructure(const ulong&); -void ViewElement(const LinearContainer&); -void PrintAllElements(const LinearContainer&); -void PrintElement(Data&, void*); // funzione richiamata dalla map -void CheckExists(const LinearContainer&); -void ChooseFoldFunction(const LinearContainer&); -void SumLessThan(const LinearContainer&, const ulong&); -void SumLessThanFold(int&, const void*, void*); -void ProductMoreThan(const LinearContainer&, const ulong&); -void ProductMoreThanFold(float&, const void*, void*); -void ConcatStringLessThan(const LinearContainer&, const ulong&); -void ConcatStringLessThanFold(string&, const void*, void*); - -//7 -void ChooseMapFunction(const LinearContainer); -void DoubleN(const LinearContainer&, const ulong&); -void DoubleNMap(int&, void*); - -void SquareN(const LinearContainer&, const ulong&); -void SquareNMap(float&, void*); - -void Uppercase(const LinearContainer&, const ulong&); -void UppercaseMap(string&, void*); - - -#endif