• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ossia / score / 36098644919

25 Sep 2026 05:27AM UTC coverage: 42.234% (+0.004%) from 42.23%
36098644919

Pull #2305

github

web-flow
Merge 5f5eefee5 into c0c64ec39
Pull Request #2305: Texture outlets, presets while playing, headless end of playback

46 of 99 new or added lines in 14 files covered. (46.46%)

165 existing lines in 15 files now uncovered.

125807 of 297879 relevant lines covered (42.23%)

116193.83 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

67.11
/src/plugins/score-lib-process/Process/Preset.cpp
1
#include "Preset.hpp"
2

3
#include <Process/ProcessList.hpp>
4

5
#include <score/serialization/JSONVisitor.hpp>
6

7
namespace Process
8
{
9

10
std::shared_ptr<Preset>
11
Preset::fromJson(const ProcessFactoryList& procs, const QByteArray& obj) noexcept
80 ✔
12
{
13
  rapidjson::Document doc;
80 ✔
14
  Process::Preset p;
80 ✔
15
  doc.Parse(obj.data(), obj.size());
80 ✔
16
  if(doc.HasParseError())
80 ✔
17
    return {};
1 ✔
18

19
  if(!doc.IsObject())
79 ✔
20
    return {};
×
21

22
  if(!doc.GetObject().HasMember("Key") || !doc.GetObject().HasMember("Preset"))
79 ✔
23
    return {};
1 ✔
24

25
  JSONWriter wr{doc};
78 ✔
26
  const auto& k = wr.obj["Key"];
78 ✔
27
  p.key.key <<= k["Uuid"];
78 ✔
28
  p.key.effect = k["Effect"].toString();
78 ✔
29

30
  if(!procs.get(p.key.key))
78 ✔
31
    return {};
×
32

33
  rapidjson::StringBuffer buf;
78 ✔
34
  JsonWriter writer(buf);
78 ✔
35
  wr.obj["Preset"].obj.Accept(writer);
78 ✔
36
  p.data = QByteArray(buf.GetString(), buf.GetSize());
78 ✔
37
  p.name = wr.obj["Name"].toString();
78 ✔
38

39
  // Optional: old presets do not have a category
40
  if(doc.GetObject().HasMember("Category"))
78 ✔
41
    p.category = wr.obj["Category"].toString();
×
42
  if(doc.GetObject().HasMember("Description"))
78 ✔
NEW
43
    p.description = wr.obj["Description"].toString();
×
44

45
  return std::make_shared<Process::Preset>(std::move(p));
78 ✔
46
}
80 ✔
47

48
QByteArray Preset::toJson() const noexcept
153 ✔
49
{
50
  JSONReader ser;
153 ✔
51
  ser.readFrom(*this);
153 ✔
52
  return ser.toByteArray();
153 ✔
53
}
153 ✔
54

55
}
56

57
template <>
58
SCORE_LIB_PROCESS_EXPORT void DataStreamReader::read(const Process::Preset& p)
166 ✔
59
{
60
  m_stream << p.key.key << p.key.effect << p.data << p.name << p.category
166 ✔
61
           << p.description;
166 ✔
62
}
166 ✔
63

64
// We only load the members of the process here.
65
template <>
66
SCORE_LIB_PROCESS_EXPORT void DataStreamWriter::write(Process::Preset& p)
×
67
{
NEW
68
  m_stream >> p.key.key >> p.key.effect >> p.data >> p.name >> p.category
×
NEW
69
      >> p.description;
×
UNCOV
70
}
×
71

72
template <>
73
SCORE_LIB_PROCESS_EXPORT void JSONReader::read(const Process::Preset& p)
153 ✔
74
{
75
  stream.StartObject();
153 ✔
76
  stream.Key("Key");
153 ✔
77
  stream.StartObject();
153 ✔
78
  stream.Key("Uuid");
153 ✔
79
  readFrom(p.key.key);
153 ✔
80
  stream.Key("Effect");
153 ✔
81
  readFrom(p.key.effect);
153 ✔
82
  stream.EndObject();
153 ✔
83

84
  obj["Name"] = p.name;
153 ✔
85
  if(!p.category.isEmpty())
153 ✔
86
    obj["Category"] = p.category;
×
87
  if(!p.description.isEmpty())
153 ✔
NEW
88
    obj["Description"] = p.description;
×
89

90
  {
91
    // TODO not very optimal...
92
    rapidjson::Document doc;
153 ✔
93
    doc.Parse(p.data.data(), p.data.size());
153 ✔
94

95
    stream.Key("Preset");
153 ✔
96
    doc.Accept(stream);
153 ✔
97
  }
153 ✔
98
  stream.EndObject();
153 ✔
99
}
153 ✔
100

101
// We only load the members of the process here.
102
template <>
103
SCORE_LIB_PROCESS_EXPORT void JSONWriter::write(Process::Preset& p)
×
104
{
105
  const auto& k = obj["Key"];
×
106
  p.key.key <<= k["Uuid"];
×
107
  p.key.effect = k["Effect"].toString();
×
108

109
  {
110
    // TODO not very optimal...
111
    rapidjson::StringBuffer buf;
×
112
    JsonWriter writer(buf);
×
113
    obj["Preset"].obj.Accept(writer);
×
114
    p.data = QByteArray(buf.GetString(), buf.GetSize());
×
115
  }
×
116
  p.name = obj["Name"].toString();
×
117
  if(auto cat = obj.tryGet("Category"))
×
118
    p.category = cat->toString();
×
NEW
119
  if(auto desc = obj.tryGet("Description"))
×
NEW
120
    p.description = desc->toString();
×
UNCOV
121
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc