Utml Overview
This chapter gives a quick overview of Flip Utml (Unit Testing Markup Language) and practical examples.
What is Utml ?
Utml is a simple and compact markup language that can easily produce documents given an utml document and a data model. Since it is very compact, it can be used to generate unit testing easily.
Note: Utml is not a backend format, it shall not be used in production.
Example of Utml
Let's consider the following Flip data model declaration :
class Note : public Object |
{ |
public: |
Float position; |
Float duration; |
}; |
using Notes = Collection <Note>; |
class Track : public Object |
{ |
public: |
String name; |
Notes notes; |
}; |
using Tracks = Array <Track>; |
class Song : public Object |
{ |
public: |
Bool playing; |
Tracks tracks; |
}; |
Utml can be used to generate quickly a full song. The following exposes an example of a song with one track named "Bass" which contains two notes and is also in a playing state.
Song { |
tracks = { |
Track { |
name = "Bass" |
notes = { |
Note { duration = 2 } |
Note { position = 1.5 duration = 2.3 } |
} |
} |
} |
playing = true |
} |
In the previous example, because the Note position is not defined it is assumed to be 0.
Members can also be defined in whatever order, they don't need to follow the C++ model declaration.
The client can then make a Flip document out of this utml source.
#include "flip/contrib/Utml.h" |
std::string utml_source = [utml source above]; |
std::vector <uint8_t> data (utml_source.begin (), utml_source.end ()); |
DataProviderMemory provider (data); |
BackEndIR backend = Utml::read (provider, Model::use ()); |
document.read (backend); |