File: test_camera.py

package info (click to toggle)
f3d 3.2.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 27,668 kB
  • sloc: cpp: 99,109; python: 811; sh: 342; xml: 238; java: 101; javascript: 95; makefile: 25
file content (137 lines) | stat: -rw-r--r-- 3,750 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import pytest

import f3d


def test_properties():
    engine = f3d.Engine.create(True)
    camera = engine.window.camera

    pos = 1, 2, 3
    foc = 1, 22, 3
    up = 0, 0, 1
    angle = 32

    camera.position = pos
    camera.focal_point = foc
    camera.view_up = up
    camera.view_angle = angle
    assert camera.position == pos
    assert camera.focal_point == foc
    assert camera.view_up == up
    assert camera.view_angle == angle


def test_get_state():
    engine = f3d.Engine.create(True)
    camera = engine.window.camera

    pos = 1, 2, 3
    foc = 1, 22, 3
    up = 0, 0, 1
    angle = 32

    camera.position = pos
    camera.focal_point = foc
    camera.view_up = up
    camera.view_angle = angle

    assert camera.state.position == pos
    assert camera.state.focal_point == foc
    assert camera.state.view_up == up
    assert camera.state.view_angle == angle


def test_set_state():
    engine = f3d.Engine.create(True)
    camera = engine.window.camera

    state = f3d.CameraState((1, 2, 3), (1, 22, 3), (0, 0, 1), 32)
    camera.state = state

    assert camera.position == state.position
    assert camera.focal_point == state.focal_point
    assert camera.view_up == state.view_up
    assert camera.view_angle == state.view_angle


def test_default_state():
    new_state = f3d.CameraState()
    assert new_state.position == (0, 0, 1)
    assert new_state.focal_point == (0, 0, 0)
    assert new_state.view_up == (0, 1, 0)
    assert new_state.view_angle == 30


def test_state_init():
    default_state = f3d.CameraState()

    s1 = f3d.CameraState((1, 2, 3))
    assert s1.position == (1, 2, 3)
    assert s1.focal_point == default_state.focal_point
    assert s1.view_up == default_state.view_up
    assert s1.view_angle == default_state.view_angle

    s2 = f3d.CameraState(focal_point=(1, 2, 3))
    assert s2.position == default_state.position
    assert s2.focal_point == (1, 2, 3)
    assert s2.view_up == default_state.view_up
    assert s2.view_angle == default_state.view_angle

    s3 = f3d.CameraState(view_up=(1, 2, 3))
    assert s3.position == default_state.position
    assert s3.focal_point == default_state.focal_point
    assert s3.view_up == (1, 2, 3)
    assert s3.view_angle == default_state.view_angle

    s4 = f3d.CameraState(view_angle=12.3)
    assert s4.position == default_state.position
    assert s4.focal_point == default_state.focal_point
    assert s4.view_up == default_state.view_up
    assert s4.view_angle == 12.3


@pytest.mark.xfail(reason="CameraState equality not implemented")
def test_state_compare():
    state1 = f3d.CameraState((1, 2, 3), (1, 22, 3), (0, 0, 1), 32)
    state2 = f3d.CameraState((1, 2, 3), (1, 22, 3), (0, 0, 1), 32)
    assert state1 == state2

    state3 = f3d.CameraState((1, 2, 3), (1, 22, 3), (0, 0, 1), 25)
    assert state1 != state3


def test_moves():
    engine = f3d.Engine.create(True)
    camera = engine.window.camera

    camera.dolly(10)
    angle = 30
    camera.roll(angle)
    camera.azimuth(angle)
    camera.yaw(angle)
    camera.elevation(angle)
    camera.pitch(angle)


def test_pan():
    engine = f3d.Engine.create(True)
    camera = engine.window.camera

    camera.state = f3d.CameraState((1, 2, 3), (1, 2, 13), (0, 1, 0), 40)
    camera.pan(1, 2)
    assert camera.state.position == (0, 4, 3)
    assert camera.state.focal_point == (0, 4, 13)

    camera.state = f3d.CameraState((1, 2, 3), (1, -2, 3), (0, 0, 1), 40)
    camera.pan(3, 4, 5)
    assert camera.state.position == (-2, -3, 7)
    assert camera.state.focal_point == (-2, -7, 7)


def test_resets():
    engine = f3d.Engine.create(True)
    camera = engine.window.camera
    camera.set_current_as_default()
    camera.reset_to_bounds()
    camera.reset_to_default()