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

openmc-dev / openmc / 18542382223

15 Oct 2025 08:54PM UTC coverage: 81.921% (-3.3%) from 85.204%
18542382223

Pull #3404

github

web-flow
Merge 578501b17 into e9077b137
Pull Request #3404: Ability to source electron/positrons directly

16594 of 23101 branches covered (71.83%)

Branch coverage included in aggregate %.

16 of 19 new or added lines in 4 files covered. (84.21%)

2215 existing lines in 79 files now uncovered.

53716 of 62726 relevant lines covered (85.64%)

43526789.79 hits per line

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

59.26
/src/string_utils.cpp
1
#include "openmc/string_utils.h"
2

3
#include <algorithm> // for equal
4
#include <cctype>    // for tolower, isspace
5

6
namespace openmc {
7

8
std::string& strtrim(std::string& s)
8,762✔
9
{
10
  const char* t = " \t\n\r\f\v";
8,762✔
11
  s.erase(s.find_last_not_of(t) + 1);
8,762✔
12
  s.erase(0, s.find_first_not_of(t));
8,762✔
13
  return s;
8,762✔
14
}
15

16
char* strtrim(char* c_str)
×
17
{
18
  std::string std_str;
×
19
  std_str.assign(c_str);
×
20
  strtrim(std_str);
×
21
  int length = std_str.copy(c_str, std_str.size());
×
22
  c_str[length] = '\0';
×
23
  return c_str;
×
UNCOV
24
}
×
25

26
std::string to_element(const std::string& name)
2,802✔
27
{
28
  int pos = name.find_first_of("0123456789");
2,802✔
29
  return name.substr(0, pos);
2,802✔
30
}
31

32
void to_lower(std::string& str)
237,034✔
33
{
34
  for (int i = 0; i < str.size(); i++)
1,878,713✔
35
    str[i] = std::tolower(str[i]);
1,641,679✔
36
}
237,034✔
37

38
int word_count(const std::string& str)
×
39
{
40
  std::stringstream stream(str);
×
41
  std::string dum;
×
42
  int count = 0;
×
43
  while (stream >> dum) {
×
44
    count++;
×
45
  }
46
  return count;
×
UNCOV
47
}
×
48

49
vector<std::string> split(const std::string& in)
7,637✔
50
{
51
  vector<std::string> out;
7,637✔
52

53
  for (int i = 0; i < in.size();) {
1,084,975✔
54
    // Increment i until we find a non-whitespace character.
55
    if (std::isspace(in[i])) {
1,077,338✔
56
      i++;
145,831✔
57

58
    } else {
59
      // Find the next whitespace character at j.
60
      int j = i + 1;
931,507✔
61
      while (j < in.size() && std::isspace(in[j]) == 0) {
1,018,371✔
62
        j++;
86,864✔
63
      }
64

65
      // Push-back everything between i and j.
66
      out.push_back(in.substr(i, j - i));
931,507✔
67
      i = j + 1; // j is whitespace so leapfrog to j+1
931,507✔
68
    }
69
  }
70

71
  return out;
7,637✔
72
}
×
73

74
bool ends_with(const std::string& value, const std::string& ending)
5,942,450✔
75
{
76
  if (ending.size() > value.size())
5,942,450✔
77
    return false;
10,967✔
78
  return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
5,931,483✔
79
}
80

81
bool starts_with(const std::string& value, const std::string& beginning)
7,284,174✔
82
{
83
  if (beginning.size() > value.size())
7,284,174!
84
    return false;
×
85
  return std::equal(beginning.begin(), beginning.end(), value.begin());
7,284,174✔
86
}
87

88
} // namespace openmc
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc