xref: /aosp_15_r20/external/google-breakpad/src/client/mac/testapp/TestClass.mm (revision 9712c20fc9bbfbac4935993a2ca0b3958c5adad2)
1*9712c20fSFrederick Mayle// Copyright 2006 Google LLC
2*9712c20fSFrederick Mayle//
3*9712c20fSFrederick Mayle// Redistribution and use in source and binary forms, with or without
4*9712c20fSFrederick Mayle// modification, are permitted provided that the following conditions are
5*9712c20fSFrederick Mayle// met:
6*9712c20fSFrederick Mayle//
7*9712c20fSFrederick Mayle//     * Redistributions of source code must retain the above copyright
8*9712c20fSFrederick Mayle// notice, this list of conditions and the following disclaimer.
9*9712c20fSFrederick Mayle//     * Redistributions in binary form must reproduce the above
10*9712c20fSFrederick Mayle// copyright notice, this list of conditions and the following disclaimer
11*9712c20fSFrederick Mayle// in the documentation and/or other materials provided with the
12*9712c20fSFrederick Mayle// distribution.
13*9712c20fSFrederick Mayle//     * Neither the name of Google LLC nor the names of its
14*9712c20fSFrederick Mayle// contributors may be used to endorse or promote products derived from
15*9712c20fSFrederick Mayle// this software without specific prior written permission.
16*9712c20fSFrederick Mayle//
17*9712c20fSFrederick Mayle// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18*9712c20fSFrederick Mayle// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19*9712c20fSFrederick Mayle// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20*9712c20fSFrederick Mayle// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21*9712c20fSFrederick Mayle// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22*9712c20fSFrederick Mayle// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23*9712c20fSFrederick Mayle// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24*9712c20fSFrederick Mayle// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25*9712c20fSFrederick Mayle// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26*9712c20fSFrederick Mayle// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27*9712c20fSFrederick Mayle// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*9712c20fSFrederick Mayle
29*9712c20fSFrederick Mayle#include <unistd.h>
30*9712c20fSFrederick Mayle
31*9712c20fSFrederick Mayle#import "TestClass.h"
32*9712c20fSFrederick Mayle
33*9712c20fSFrederick Maylestruct AStruct {
34*9712c20fSFrederick Mayle  int x;
35*9712c20fSFrederick Mayle  float y;
36*9712c20fSFrederick Mayle  double z;
37*9712c20fSFrederick Mayle};
38*9712c20fSFrederick Mayle
39*9712c20fSFrederick Mayleclass InternalTestClass {
40*9712c20fSFrederick Mayle public:
41*9712c20fSFrederick Mayle  InternalTestClass(int a) : a_(a) {}
42*9712c20fSFrederick Mayle  ~InternalTestClass() {}
43*9712c20fSFrederick Mayle
44*9712c20fSFrederick Mayle  void snooze(float a);
45*9712c20fSFrederick Mayle  void snooze(int a);
46*9712c20fSFrederick Mayle  int snooze(int a, float b);
47*9712c20fSFrederick Mayle
48*9712c20fSFrederick Mayle protected:
49*9712c20fSFrederick Mayle  int a_;
50*9712c20fSFrederick Mayle  AStruct s_;
51*9712c20fSFrederick Mayle
52*9712c20fSFrederick Mayle  static void InternalFunction(AStruct &s);
53*9712c20fSFrederick Mayle  static float kStaticFloatValue;
54*9712c20fSFrederick Mayle};
55*9712c20fSFrederick Mayle
56*9712c20fSFrederick Maylevoid InternalTestClass::snooze(float a) {
57*9712c20fSFrederick Mayle  InternalFunction(s_);
58*9712c20fSFrederick Mayle  sleep(a_ * a);
59*9712c20fSFrederick Mayle}
60*9712c20fSFrederick Mayle
61*9712c20fSFrederick Maylevoid InternalTestClass::snooze(int a) {
62*9712c20fSFrederick Mayle  InternalFunction(s_);
63*9712c20fSFrederick Mayle  sleep(a_ * a);
64*9712c20fSFrederick Mayle}
65*9712c20fSFrederick Mayle
66*9712c20fSFrederick Mayleint InternalTestClass::snooze(int a, float b) {
67*9712c20fSFrederick Mayle  InternalFunction(s_);
68*9712c20fSFrederick Mayle  sleep(a_ * a * b);
69*9712c20fSFrederick Mayle
70*9712c20fSFrederick Mayle  return 33;
71*9712c20fSFrederick Mayle}
72*9712c20fSFrederick Mayle
73*9712c20fSFrederick Maylevoid InternalTestClass::InternalFunction(AStruct &s) {
74*9712c20fSFrederick Mayle  s.x = InternalTestClass::kStaticFloatValue;
75*9712c20fSFrederick Mayle}
76*9712c20fSFrederick Mayle
77*9712c20fSFrederick Maylefloat InternalTestClass::kStaticFloatValue = 42;
78*9712c20fSFrederick Mayle
79*9712c20fSFrederick Maylestatic float PlainOldFunction() {
80*9712c20fSFrederick Mayle  return 3.14145f;
81*9712c20fSFrederick Mayle}
82*9712c20fSFrederick Mayle
83*9712c20fSFrederick Mayle@implementation TestClass
84*9712c20fSFrederick Mayle
85*9712c20fSFrederick Mayle- (void)wait {
86*9712c20fSFrederick Mayle  InternalTestClass t(10);
87*9712c20fSFrederick Mayle  float z = PlainOldFunction();
88*9712c20fSFrederick Mayle
89*9712c20fSFrederick Mayle  while (1) {
90*9712c20fSFrederick Mayle    t.snooze(z);
91*9712c20fSFrederick Mayle  }
92*9712c20fSFrederick Mayle}
93*9712c20fSFrederick Mayle
94*9712c20fSFrederick Mayle@end
95