Main.java

1
package g0803.bindingofshiba;
2
3
import g0803.bindingofshiba.bundles.Bundle;
4
import g0803.bindingofshiba.bundles.DefaultBoundingBoxesProvider;
5
import g0803.bindingofshiba.bundles.DefaultFontsProvider;
6
import g0803.bindingofshiba.bundles.DefaultTexturesProvider;
7
import g0803.bindingofshiba.gui.GUI;
8
import g0803.bindingofshiba.gui.LanternaGUI;
9
import g0803.bindingofshiba.gui.keyboard.Keyboard;
10
import g0803.bindingofshiba.math.BoundingBox;
11
import g0803.bindingofshiba.model.menu.MainMenu;
12
import g0803.bindingofshiba.state.State;
13
import g0803.bindingofshiba.state.menu.MenuState;
14
import g0803.bindingofshiba.textures.ITexture;
15
import java.awt.*;
16
import java.io.IOException;
17
import java.net.URISyntaxException;
18
19
public class Main implements App {
20
21
    private State<?> state;
22
    private final GUI gui;
23
24
    private final Bundle<Font> fonts;
25
    private final Bundle<ITexture> textures;
26
    private final Bundle<BoundingBox> boundingBoxes;
27
28
    public Main() throws IOException, FontFormatException {
29
        this.fonts = new DefaultFontsProvider().getBundle();
30
        this.textures = new DefaultTexturesProvider().getBundle();
31
        this.boundingBoxes = new DefaultBoundingBoxesProvider().getBundle();
32
33
        this.state = new MenuState(new MainMenu());
34
        this.gui = new LanternaGUI(fonts, Constants.SCREEN_WIDTH, Constants.SCREEN_HEIGHT);
35
    }
36
37
    public Main(
38
            State<?> initialState,
39
            GUI gui,
40
            Bundle<Font> fonts,
41
            Bundle<ITexture> textures,
42
            Bundle<BoundingBox> boundingBoxes) {
43
        this.fonts = fonts;
44
        this.textures = textures;
45
        this.boundingBoxes = boundingBoxes;
46
47
        this.state = initialState;
48
        this.gui = gui;
49
    }
50
51
    public static void main(String[] args)
52
            throws IOException, URISyntaxException, FontFormatException {
53 1 1. main : removed call to g0803/bindingofshiba/Main::start → NO_COVERAGE
        new Main().start();
54
    }
55
56
    @Override
57
    public void setState(State<?> state) {
58
        this.state = state;
59
    }
60
61
    @Override
62
    public Keyboard getKeyboard() {
63 1 1. getKeyboard : replaced return value with null for g0803/bindingofshiba/Main::getKeyboard → KILLED
        return this.gui.getKeyboard();
64
    }
65
66
    @Override
67
    public Bundle<Font> getFonts() {
68 1 1. getFonts : replaced return value with null for g0803/bindingofshiba/Main::getFonts → NO_COVERAGE
        return fonts;
69
    }
70
71
    @Override
72
    public Bundle<ITexture> getTextures() {
73 1 1. getTextures : replaced return value with null for g0803/bindingofshiba/Main::getTextures → NO_COVERAGE
        return textures;
74
    }
75
76
    @Override
77
    public Bundle<BoundingBox> getBoundingBoxes() {
78 1 1. getBoundingBoxes : replaced return value with null for g0803/bindingofshiba/Main::getBoundingBoxes → NO_COVERAGE
        return boundingBoxes;
79
    }
80
81
    public void start() throws IOException {
82
        int frameTime = 1000 / Constants.FPS;
83
84
        Keyboard keyboard = this.gui.getKeyboard();
85
86 1 1. start : negated conditional → NO_COVERAGE
        while (this.state != null) {
87
            long startTime = System.currentTimeMillis();
88
89 1 1. start : removed call to g0803/bindingofshiba/gui/keyboard/Keyboard::update → NO_COVERAGE
            keyboard.update();
90 1 1. start : negated conditional → NO_COVERAGE
            if (keyboard.isClosed()) break;
91
92 1 1. start : removed call to g0803/bindingofshiba/state/State::step → NO_COVERAGE
            this.state.step(this, this.gui);
93
94 1 1. start : Replaced long subtraction with addition → NO_COVERAGE
            long elapsedTime = System.currentTimeMillis() - startTime;
95 1 1. start : Replaced long subtraction with addition → NO_COVERAGE
            long sleepTime = frameTime - elapsedTime;
96
97
            try {
98 3 1. start : changed conditional boundary → NO_COVERAGE
2. start : negated conditional → NO_COVERAGE
3. start : removed call to java/lang/Thread::sleep → NO_COVERAGE
                if (sleepTime > 0) Thread.sleep(sleepTime);
99
            } catch (InterruptedException ignored) {
100
                break;
101
            }
102
        }
103
104 1 1. start : removed call to g0803/bindingofshiba/gui/GUI::close → NO_COVERAGE
        this.gui.close();
105
    }
106
}

Mutations

53

1.1
Location : main
Killed by : none
removed call to g0803/bindingofshiba/Main::start → NO_COVERAGE

63

1.1
Location : getKeyboard
Killed by : g0803.bindingofshiba.MainTest.[engine:junit-jupiter]/[class:g0803.bindingofshiba.MainTest]/[method:returnsCorrectKeyboard()]
replaced return value with null for g0803/bindingofshiba/Main::getKeyboard → KILLED

68

1.1
Location : getFonts
Killed by : none
replaced return value with null for g0803/bindingofshiba/Main::getFonts → NO_COVERAGE

73

1.1
Location : getTextures
Killed by : none
replaced return value with null for g0803/bindingofshiba/Main::getTextures → NO_COVERAGE

78

1.1
Location : getBoundingBoxes
Killed by : none
replaced return value with null for g0803/bindingofshiba/Main::getBoundingBoxes → NO_COVERAGE

86

1.1
Location : start
Killed by : none
negated conditional → NO_COVERAGE

89

1.1
Location : start
Killed by : none
removed call to g0803/bindingofshiba/gui/keyboard/Keyboard::update → NO_COVERAGE

90

1.1
Location : start
Killed by : none
negated conditional → NO_COVERAGE

92

1.1
Location : start
Killed by : none
removed call to g0803/bindingofshiba/state/State::step → NO_COVERAGE

94

1.1
Location : start
Killed by : none
Replaced long subtraction with addition → NO_COVERAGE

95

1.1
Location : start
Killed by : none
Replaced long subtraction with addition → NO_COVERAGE

98

1.1
Location : start
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : start
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : start
Killed by : none
removed call to java/lang/Thread::sleep → NO_COVERAGE

104

1.1
Location : start
Killed by : none
removed call to g0803/bindingofshiba/gui/GUI::close → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.7.0