diff --git a/MANIFEST.in b/MANIFEST.in
index e1e0072..8353cfd 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -2,3 +2,4 @@
include Makefile
recursive-include tests *.py
recursive-include tests *.xml
+ recursive-include tests *.yaml
diff --git a/setup.cfg b/setup.cfg
index 2a679dc..f4a8bf5 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -44,8 +44,9 @@ testing =
flake8
mock
pytest
- pytest-cov
+ pytest-cov
pytest-timeout
+ pytest-vcr
requests-mock
tox
@@ -77,7 +78,7 @@ commands = py.test --cov --cov-report=term --cov-report=xml {posargs}
[testenv:flake8]
description = run flake8 under {basepython}
-commands = flake8 rxv/ tests/
+commands = flake8 rxv/ tests/
extras = testing
[testenv:manifest]
diff --git a/tests/integration/cassettes/test_RX_V577/RX-V577.yaml b/tests/integration/cassettes/test_RX_V577/RX-V577.yaml
new file mode 100644
index 0000000..0fcc3a2
--- /dev/null
+++ b/tests/integration/cassettes/test_RX_V577/RX-V577.yaml
@@ -0,0 +1,795 @@
+interactions:
+- request:
+ body: null
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ User-Agent:
+ - python-requests/2.25.1
+ method: GET
+ uri: http://192.168.1.100/YamahaRemoteControl/desc.xml
+ response:
+ body:
+ string: Title_1Param_11,9,Latin-1Name,Zone=Param_11,9,Latin-1Param_1Input,Input_Sel=Param_1Param_1Input,Input_Sel=Param_1Val=Param_1:Exp=Param_2:Unit=Param_3-805,165,51dBVolume,Lvl,Val=Param_1:Volume,Lvl,Exp=Param_2:Volume,Lvl,Unit=Param_3-805,165,51dBOnOffVolume,Mute=Param_1OnOffdB0-97Volume,Scale=Param_1dB0-97OnStandbyPower_Control,Power=Param_1OnStandbyLast120 min90 min60 min30 minOffPower_Control,Sleep=Param_1120 min90 min60 min30 minOffPlayPauseStopSkip FwdSkip RevUpDownLeftRightReturnSelReturn to HomeOn ScreenOptionDisplayOnOffParam_1OnOffParam_1Hall
+ in MunichHall
+ in ViennaChamberCellar ClubThe Roxy TheatreThe Bottom LineSportsAction
+ GameRoleplaying
+ GameMusic
+ VideoStandardSpectacleSci-FiAdventureDramaMono
+ MovieSurround
+ Decoder2ch
+ Stereo7ch
+ StereoSurround,Program_Sel,Current,Sound_Program=Param_1Hall in MunichHall in ViennaChamberCellar
+ ClubThe
+ Roxy TheatreThe
+ Bottom LineSportsAction GameRoleplaying GameMusic VideoStandardSpectacleSci-FiAdventureDramaMono
+ MovieSurround
+ Decoder2ch
+ Stereo7ch
+ StereoOnOffSurround,Program_Sel,Current,Straight=Param_1OnOffOnOffSurround,Program_Sel,Current,Enhancer=Param_1OnOffVal=Param_1:Exp=Param_2:Unit=Param_3-60,60,51dBSound_Video,Tone,Bass,Val=Param_1:Sound_Video,Tone,Bass,Exp=Param_2:Sound_Video,Tone,Bass,Unit=Param_3-60,60,51dBVal=Param_1:Exp=Param_2:Unit=Param_3-60,60,51dBSound_Video,Tone,Treble,Val=Param_1:Sound_Video,Tone,Treble,Exp=Param_2:Sound_Video,Tone,Treble,Unit=Param_3-60,60,51dBVal=Param_1:Exp=Param_2:Unit=Param_3-60,60,51dBVolume,Subwoofer_Trim,Val=Param_1:Volume,Subwoofer_Trim,Exp=Param_2:Volume,Subwoofer_Trim,Unit=Param_3-60,60,51dBAutoOffSound_Video,Adaptive_DRC=Param_1AutoOffAutoOffSurround,_3D_Cinema_DSP=Param_1AutoOffOnOffSound_Video,Direct,Mode=Param_1OnOffAutoOffSound_Video,Extra_Bass=Param_1AutoOffSound_Video,HDMI,Standby_Through_Info=Param_1OnOffOnOffSpeaker_Preout,Speaker_AB,Speaker_A=Param_1OnOffOnOffSpeaker_Preout,Speaker_AB,Speaker_B=Param_1OnOffMain_Zone,Power_Control,PowerMain_Zone,Volume,LvlMain_Zone,Volume,MuteMain_Zone,Input,Input_SelMain_Zone,Config,Name,ZoneMain_Zone,Scene,Scene_SelMain_Zone,Sound_Video,Tone,BassMain_Zone,Sound_Video,Tone,TrebleMain_Zone,Surround,Program_Sel,Current,Sound_ProgramMain_Zone,Surround,Program_Sel,Current,StraightMain_Zone,Surround,Program_Sel,Current,EnhancerMain_Zone,Sound_Video,Adaptive_DRCMain_Zone,Surround,_3D_Cinema_DSPMain_Zone,Sound_Video,Dialogue_Adjust,Dialogue_LiftSystem,Sound_Video,HDMI,Video,Preset_Sel,CurrentMain_Zone,Sound_Video,Direct,ModeMain_Zone,Cursor_Control,CursorMain_Zone,Cursor_Control,Menu_ControlMain_Zone,Volume,Subwoofer_TrimMain_Zone,Power_Control,SleepMain_Zone,Play_Control,PlaybackMain_Zone,Speaker_Preout,Speaker_AB,Speaker_AMain_Zone,Speaker_Preout,Speaker_AB,Speaker_BMain_Zone,Sound_Video,Extra_BassMain_Zone,Volume,ScaleMain_Zone,Cursor_Control,Contents_DisplayMain_Zone,Basic_StatusMain_Zone,Input,Input_Sel_ItemMain_Zone,ConfigMain_Zone,Scene,Scene_Sel_ItemMain_Zone,Cursor_Control,Contents_DisplayVolume,Zone_B,Feature_Availability=Param_1ReadyNot ReadyParam_11,9,Latin-1Name,Zone_B=Param_11,9,Latin-1Param_1Input,Input_Sel=Param_1Val=Param_1:Exp=Param_2:Unit=Param_3-805,165,51dBVolume,Zone_B,Lvl,Val=Param_1:Volume,Zone_B,Lvl,Exp=Param_2:Volume,Zone_B,Lvl,Unit=Param_3-805,165,51dBOnOffVolume,Zone_B,Mute=Param_1OnOffOnOffVolume,Zone_B,Interlock=Param_1OnOffOnOffPower_Control,Zone_B_Power_Info=Param_1OnStandbyPlayPauseStopSkip FwdSkip RevUpDownLeftRightReturnSelReturn to HomeOn ScreenOptionDisplayMain_Zone,Power_Control,PowerMain_Zone,Volume,Zone_B,LvlMain_Zone,Volume,Zone_B,MuteMain_Zone,Input,Input_SelMain_Zone,Config,Name,Zone_BMain_Zone,Volume,Zone_B,InterlockMain_Zone,Cursor_Control,CursorMain_Zone,Cursor_Control,Menu_ControlMain_Zone,Power_Control,SleepMain_Zone,Play_Control,PlaybackMain_Zone,Speaker_Preout,Speaker_AB,Speaker_AMain_Zone,Speaker_Preout,Speaker_AB,Speaker_BMain_Zone,Basic_StatusMain_Zone,Input,Input_Sel_ItemMain_Zone,ConfigFeature_Availability=Param_1ReadyNot ReadyAuto UpAuto DownCancelTuning,Freq,AM,Val=Param_1:Tuning,Freq,AM,Exp=Param_2:Tuning,Freq,AM,Unit=Param_3530,1710,10Auto UpAuto
+ Down0kHzAuto
+ UpAuto DownCancelTuning,Freq,FM,Val=Param_1:Tuning,Freq,FM,Exp=Param_2:Tuning,Freq,FM,Unit=Param_38750,10790,20Auto UpAuto
+ Down2MHzUpDownPreset,Preset_Sel=Param_1AMFMTuning,Band=Param_1AMFMVal=Param_1:Exp=Param_2:Unit=Param_3530,1710,100kHzTuning,Freq,AM,Val=Param_1:Tuning,Freq,AM,Exp=Param_2:Tuning,Freq,AM,Unit=Param_3530,1710,10Auto UpAuto
+ Down0kHzVal=Param_1:Exp=Param_2:Unit=Param_38750,10790,202MHzTuning,Freq,FM,Val=Param_1:Tuning,Freq,FM,Exp=Param_2:Tuning,Freq,FM,Unit=Param_38750,10790,20Auto UpAuto
+ Down2MHzParam_1Preset,Preset_Sel=Param_1Tuning,Band=Param_1AMFMTuning,Freq,Current,Val=Param_1:Tuning,Freq,Current,Exp=Param_2:Tuning,Freq,Current,Unit=Param_3530,1710,108750,10790,20Auto UpAuto
+ Down02kHzMHzSignal_Info,Tuned=Param_1NegateAssertSignal_Info,Stereo=Param_1NegateAssertTuner,Play_Control,Search_ModeTuner,Play_Control,Preset,Preset_SelTuner,Play_Control,Tuning,BandTuner,Play_Control,Tuning,Freq,FMTuner,Play_Control,Tuning,Freq,AMTuner,Play_Control,Tuning,Freq,FM,ValTuner,Play_Control,Tuning,Freq,AM,ValTuner,Play_InfoTuner,ConfigTuner,Play_Control,Preset,Preset_Sel_ItemFeature_Availability=Param_1ReadyNot ReadyPlayPausePlayback_Info=Param_1PlayStopSkip
+ FwdSkip RevMeta_Info,Artist=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Song=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayStopInput_Logo,URL_S=Param_10,128,UTF-8AirPlay,Play_Control,PlaybackAirPlay,Play_InfoAirPlay,ConfigFeature_Availability=Param_1ReadyNot ReadyPlayPausePlayback_Info=Param_1PlayPauseStopSkip
+ FwdSkip RevMeta_Info,Artist=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Track=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopInput_Logo,URL_S=Param_10,128,UTF-8Spotify,Play_Control,PlaybackSpotify,Play_InfoSpotify,ConfigExtendedFeature_Availability=Param_1ReadyNot ReadyOffOneAllPlay_Mode,Repeat=Param_1OffOneAllOffSongsAlbumsPlay_Mode,Shuffle=Param_1OffSongsAlbumsPlayPauseStopPlayback_Info=Param_1PlayPauseStopSkip FwdSkip RevMeta_Info,Artist=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Song=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopPlay_Mode,Repeat=Param_1OffOneAllPlay_Mode,Shuffle=Param_1OffSongsAlbumsAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFParam_11,8,1,Line_%UpDownReturnSelReturn
+ to HomeParam_11,65536,1UpDownMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1iPod_USB,Play_Control,PlaybackiPod_USB,List_Control,Direct_SeliPod_USB,List_Control,Jump_LineiPod_USB,List_Control,CursoriPod_USB,List_Control,PageiPod_USB,Play_Control,Play_Mode,RepeatiPod_USB,Play_Control,Play_Mode,ShuffleiPod_USB,Play_Control,iPod_ModeiPod_USB,Play_InfoiPod_USB,List_InfoiPod_USB,ConfigFeature_Availability=Param_1ReadyNot ReadyOffOneAllPlay_Mode,Repeat=Param_1OffOneAllOffOnPlay_Mode,Shuffle=Param_1OffOnPlayPauseStopPlayback_Info=Param_1PlayPauseStopSkip FwdSkip RevMeta_Info,Artist=Param_10,64,UTF-8Meta_Info,Album=Param_10,64,UTF-8Meta_Info,Song=Param_10,64,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopPlay_Mode,Repeat=Param_1OffOneAllPlay_Mode,Shuffle=Param_1OffOnAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFParam_11,8,1,Line_%UpDownReturnSelReturn
+ to HomeParam_11,65536,1UpDownMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1USB,Play_Control,Play_Mode,RepeatUSB,Play_Control,Play_Mode,ShuffleUSB,Play_Control,PlaybackUSB,Play_Control,Preset,Preset_SelUSB,List_Control,Direct_SelUSB,List_Control,Jump_LineUSB,List_Control,CursorUSB,List_Control,PageUSB,Play_InfoUSB,List_InfoUSB,ConfigUSB,Play_Control,Preset,Preset_Sel_ItemFeature_Availability=Param_1ReadyNot ReadyPlayStopPlayback_Info=Param_1PlayStopMeta_Info,Station=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Song=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayStopAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFParam_11,8,1,Line_%UpDownReturnSelReturn
+ to HomeParam_11,65536,1UpDownOnOffMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1NET_RADIO,Play_Control,PlaybackNET_RADIO,List_Control,Direct_SelNET_RADIO,List_Control,Jump_LineNET_RADIO,List_Control,CursorNET_RADIO,List_Control,PageNET_RADIO,Play_Control,Preset,Preset_SelNET_RADIO,List_Control,BookmarkNET_RADIO,Play_InfoNET_RADIO,List_InfoNET_RADIO,ConfigNET_RADIO,Play_Control,Preset,Preset_Sel_ItemFeature_Availability=Param_1ReadyNot ReadyOffOneAllPlay_Mode,Repeat=Param_1OffOneAllOffOnPlay_Mode,Shuffle=Param_1OffOnPlayPauseStopPlayback_Info=Param_1PlayPauseStopSkip FwdSkip RevMeta_Info,Artist=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Song=Param_10,128,UTF-8Feature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopPlay_Mode,Repeat=Param_1OffOneAllPlay_Mode,Shuffle=Param_1OffOnAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFParam_11,8,1,Line_%UpDownReturnSelReturn
+ to HomeParam_11,65536,1UpDownMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1SERVER,Play_Control,Play_Mode,RepeatSERVER,Play_Control,Play_Mode,ShuffleSERVER,Play_Control,PlaybackSERVER,Play_Control,Preset,Preset_SelSERVER,List_Control,Direct_SelSERVER,List_Control,Jump_LineSERVER,List_Control,CursorSERVER,List_Control,PageSERVER,Play_Control,Play_URISERVER,Play_InfoSERVER,List_InfoSERVER,ConfigSERVER,Play_Control,Preset,Preset_Sel_ItemFeature_Availability=Param_1ReadyNot ReadyPlayPauseStopPlayback_Info=Param_1PlayPauseStopSkip
+ FwdThumb UpThumb
+ DownFeedback=Param_1---Thumb UpThumb DownMeta_Info,Station=Param_10,128,UTF-8Meta_Info,Album=Param_10,128,UTF-8Meta_Info,Track=Param_10,128,UTF-8Feedback=Param_1---Thumb UpThumb DownFeature_Availability=Param_1ReadyNot ReadyPlayback_Info=Param_1PlayPauseStopAlbum_ART,URL=Param_10,128,UTF-8Album_ART,ID=Param_10,255,1Album_ART,Format=Param_1BMPYMFInput_Logo,URL_S=Param_10,128,UTF-8Param_11,8,1,Line_%UpDownReturnSelReturn
+ to HomeParam_11,65536,1UpDownMenu_Status=Param_1ReadyBusyMenu_Layer=Param_11,16,1Menu_Name=Param_10,128,UTF-8Line_1Current_List,Line_1,Txt=Param_1:Current_List,Line_1,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_2Current_List,Line_2,Txt=Param_1:Current_List,Line_2,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_3Current_List,Line_3,Txt=Param_1:Current_List,Line_3,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_4Current_List,Line_4,Txt=Param_1:Current_List,Line_4,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_5Current_List,Line_5,Txt=Param_1:Current_List,Line_5,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_6Current_List,Line_6,Txt=Param_1:Current_List,Line_6,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_7Current_List,Line_7,Txt=Param_1:Current_List,Line_7,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableLine_8Current_List,Line_8,Txt=Param_1:Current_List,Line_8,Attribute=Param_20,128,UTF-8ContainerUnplayable ItemItemUnselectableCursor_Position,Current_Line=Param_11,65536,1Cursor_Position,Max_Line=Param_10,65536,1Pandora,Play_Control,FeedbackPandora,Play_Control,PlaybackPandora,Play_Control,Preset,Preset_SelPandora,List_Control,Direct_SelPandora,List_Control,Jump_LinePandora,List_Control,CursorPandora,List_Control,PagePandora,Play_InfoPandora,List_InfoPandora,ConfigPandora,Play_Control,Preset,Preset_Sel_Item
+ headers:
+ Content-Language:
+ - en
+ Content-Length:
+ - '76367'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/tests/integration/cassettes/test_RX_V577/test_basic_status.yaml b/tests/integration/cassettes/test_RX_V577/test_basic_status.yaml
new file mode 100644
index 0000000..aa1c2dc
--- /dev/null
+++ b/tests/integration/cassettes/test_RX_V577/test_basic_status.yaml
@@ -0,0 +1,66 @@
+interactions:
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '93'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: OnStandbyOff-5101dBOff01dBdBNot
+ ReadyOn-5101dBOffNET
+ RADIONET RADIORWNET
+ RADIO/YamahaRemoteControl/Icons/icon005.pngNET_RADIO1OffOn7ch
+ Stereo<_3D_Cinema_DSP>Auto01dB01dBOffOnOffOffOnOff
+ headers:
+ Content-Length:
+ - '1456'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: NET RADIO
+ headers:
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/tests/integration/cassettes/test_RX_V577/test_fade.yaml b/tests/integration/cassettes/test_RX_V577/test_fade.yaml
new file mode 100644
index 0000000..1af735f
--- /dev/null
+++ b/tests/integration/cassettes/test_RX_V577/test_fade.yaml
@@ -0,0 +1,362 @@
+interactions:
+- request:
+ body: -5001dB
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '126'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '91'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '92'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: -5001dB
+ headers:
+ Content-Length:
+ - '133'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: -5001dB
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '126'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '91'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: -4901dB
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '126'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '91'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: -4801dB
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '126'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '91'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '92'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: -4801dB
+ headers:
+ Content-Length:
+ - '133'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '92'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: -4801dB
+ headers:
+ Content-Length:
+ - '133'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: -4801dB
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '126'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '91'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: -4901dB
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '126'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '91'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: -5001dB
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '126'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '91'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: -5101dB
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '126'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '91'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '92'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: -5101dB
+ headers:
+ Content-Length:
+ - '133'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/tests/integration/cassettes/test_RX_V577/test_inputs.yaml b/tests/integration/cassettes/test_RX_V577/test_inputs.yaml
new file mode 100644
index 0000000..54f741b
--- /dev/null
+++ b/tests/integration/cassettes/test_RX_V577/test_inputs.yaml
@@ -0,0 +1,190 @@
+interactions:
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: NET RADIO
+ headers:
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '112'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: PandoraRW
+ Pandora /YamahaRemoteControl/Icons/icon075.pngPandora1SpotifyRW
+ Spotify /YamahaRemoteControl/Icons/icon102.pngSpotify1AirPlayRW
+ AirPlay /YamahaRemoteControl/Icons/icon067.pngAirPlay1SERVERRW
+ SERVER /YamahaRemoteControl/Icons/icon006.pngSERVER1NET
+ RADIORWNET RADIO/YamahaRemoteControl/Icons/icon005.pngNET_RADIO1USBRW USB /YamahaRemoteControl/Icons/icon009.pngUSB1iPod
+ (USB)R USB /YamahaRemoteControl/Icons/icon011.pngiPod_USB1TUNERRW TUNER /YamahaRemoteControl/Icons/icon008.pngTuner1HDMI1RWPS3 /YamahaRemoteControl/Icons/icon004.pngOsdname:PlayStation
+ 31HDMI2RW HDMI2 /YamahaRemoteControl/Icons/icon004.pngOsdname:PlayStation
+ 41HDMI3RW HDMI3 /YamahaRemoteControl/Icons/icon004.png1HDMI4RWChromecas/YamahaRemoteControl/Icons/icon004.pngOsdname:Chromecast1HDMI5RW HDMI5 /YamahaRemoteControl/Icons/icon004.png1HDMI6RW HDMI6 /YamahaRemoteControl/Icons/icon004.png1AV1RW AV1 /YamahaRemoteControl/Icons/icon003.png1AV2RW AV2 /YamahaRemoteControl/Icons/icon003.png1AV3RW AV3 /YamahaRemoteControl/Icons/icon003.png1AV4RW AV4 /YamahaRemoteControl/Icons/icon003.png1AV5RW AV5 /YamahaRemoteControl/Icons/icon003.png1AV6RW AV6 /YamahaRemoteControl/Icons/icon003.png1AUXRW AUX /YamahaRemoteControl/Icons/icon104.png1
+ headers:
+ Content-Length:
+ - '4236'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: HDMI1
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '99'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '101'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: HDMI1
+ headers:
+ Content-Length:
+ - '106'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: HDMI2
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '99'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '101'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: HDMI2
+ headers:
+ Content-Length:
+ - '106'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/tests/integration/cassettes/test_RX_V577/test_menu.yaml b/tests/integration/cassettes/test_RX_V577/test_menu.yaml
new file mode 100644
index 0000000..a55c912
--- /dev/null
+++ b/tests/integration/cassettes/test_RX_V577/test_menu.yaml
@@ -0,0 +1,584 @@
+interactions:
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '112'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: PandoraRW
+ Pandora /YamahaRemoteControl/Icons/icon075.pngPandora1SpotifyRW
+ Spotify /YamahaRemoteControl/Icons/icon102.pngSpotify1AirPlayRW
+ AirPlay /YamahaRemoteControl/Icons/icon067.pngAirPlay1SERVERRW
+ SERVER /YamahaRemoteControl/Icons/icon006.pngSERVER1NET
+ RADIORWNET RADIO/YamahaRemoteControl/Icons/icon005.pngNET_RADIO1USBRW USB /YamahaRemoteControl/Icons/icon009.pngUSB1iPod
+ (USB)R USB /YamahaRemoteControl/Icons/icon011.pngiPod_USB1TUNERRW TUNER /YamahaRemoteControl/Icons/icon008.pngTuner1HDMI1RWPS3 /YamahaRemoteControl/Icons/icon004.pngOsdname:PlayStation
+ 31HDMI2RW HDMI2 /YamahaRemoteControl/Icons/icon004.pngOsdname:PlayStation
+ 41HDMI3RW HDMI3 /YamahaRemoteControl/Icons/icon004.png1HDMI4RWChromecas/YamahaRemoteControl/Icons/icon004.pngOsdname:Chromecast1HDMI5RW HDMI5 /YamahaRemoteControl/Icons/icon004.png1HDMI6RW HDMI6 /YamahaRemoteControl/Icons/icon004.png1AV1RW AV1 /YamahaRemoteControl/Icons/icon003.png1AV2RW AV2 /YamahaRemoteControl/Icons/icon003.png1AV3RW AV3 /YamahaRemoteControl/Icons/icon003.png1AV4RW AV4 /YamahaRemoteControl/Icons/icon003.png1AV5RW AV5 /YamahaRemoteControl/Icons/icon003.png1AV6RW AV6 /YamahaRemoteControl/Icons/icon003.png1AUXRW AUX /YamahaRemoteControl/Icons/icon104.png1
+ headers:
+ Content-Length:
+ - '4236'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: NET RADIO
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '103'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '101'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: NET RADIO
+ headers:
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '87'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: Ready1NET
+ RADIOBookmarksContainerLocationsContainerGenresContainerNew
+ StationsContainerPopular
+ StationsContainerPodcastsContainerHelpContainerGet
+ Access CodeContainer18
+ headers:
+ Content-Length:
+ - '851'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: NET RADIO
+ headers:
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: 3
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '109'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '115'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: NET RADIO
+ headers:
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: NET RADIO
+ headers:
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: Up
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '104'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '109'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: NET RADIO
+ headers:
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: NET RADIO
+ headers:
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: Down
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '106'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '109'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: HDMI1
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '99'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '101'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: HDMI1
+ headers:
+ Content-Length:
+ - '106'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: HDMI1
+ headers:
+ Content-Length:
+ - '106'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: Right
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '111'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '113'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: HDMI1
+ headers:
+ Content-Length:
+ - '106'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '102'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: HDMI1
+ headers:
+ Content-Length:
+ - '106'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: Left
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '113'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/tests/integration/cassettes/test_RX_V577/test_on_off.yaml b/tests/integration/cassettes/test_RX_V577/test_on_off.yaml
new file mode 100644
index 0000000..dd687d2
--- /dev/null
+++ b/tests/integration/cassettes/test_RX_V577/test_on_off.yaml
@@ -0,0 +1,92 @@
+interactions:
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: Standby
+ headers:
+ Content-Length:
+ - '116'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: On
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '104'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string:
+ headers:
+ Content-Length:
+ - '109'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+- request:
+ body: GetParam
+ headers:
+ Accept:
+ - '*/*'
+ Accept-Encoding:
+ - gzip, deflate
+ Connection:
+ - keep-alive
+ Content-Length:
+ - '110'
+ Content-Type:
+ - text/xml
+ User-Agent:
+ - python-requests/2.25.1
+ method: POST
+ uri: http://192.168.1.100/YamahaRemoteControl/ctrl
+ response:
+ body:
+ string: On
+ headers:
+ Content-Length:
+ - '111'
+ Content-Type:
+ - text/xml; charset="utf-8"
+ Server:
+ - AV_Receiver/3.1 (RX-V577)
+ status:
+ code: 200
+ message: OK
+version: 1
diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py
new file mode 100644
index 0000000..0ca80cb
--- /dev/null
+++ b/tests/integration/conftest.py
@@ -0,0 +1,14 @@
+import os
+
+import pytest
+
+
+@pytest.fixture(scope='module')
+def vcr_config():
+ return {'match_on': ['method', 'path', 'raw_body']}
+
+
+@pytest.fixture(scope='module')
+def vcr_cassette_dir(request):
+ # Put all cassettes in tests/integration/cassettes/{module}/{test}.yaml
+ return os.path.join('tests/integration/cassettes', request.module.__name__)
diff --git a/tests/integration/test_RX_V577.py b/tests/integration/test_RX_V577.py
new file mode 100644
index 0000000..3027911
--- /dev/null
+++ b/tests/integration/test_RX_V577.py
@@ -0,0 +1,58 @@
+"""Integration test for the RX-V577 model receiver."""
+import pytest
+
+import rxv
+
+
+@pytest.fixture
+def rx(vcr):
+ with vcr.use_cassette('RX-V577.yaml'):
+ return rxv.RXV(
+ 'http://192.168.1.100:80/YamahaRemoteControl/ctrl', 'RX-V577'
+ )
+
+
+@pytest.mark.vcr()
+def test_on_off(rx):
+ assert rx.on is False, "reciver should be turned off"
+ rx.on = True
+ assert rx.on
+
+
+@pytest.mark.vcr()
+def test_basic_status(rx):
+ bs = rx.basic_status
+ assert bs.input == rx.input
+ assert bs.on == 'On'
+
+
+@pytest.mark.vcr()
+def test_inputs(rx):
+ assert rx.input in rx.inputs()
+ assert "HDMI1" in rx.inputs()
+ rx.input = "HDMI1"
+ assert rx.input == "HDMI1"
+ rx.input = "HDMI2"
+ assert rx.input == "HDMI2"
+
+
+@pytest.mark.vcr()
+def test_menu(rx):
+ rx.input = "NET RADIO"
+ assert rx.menu_status()
+ rx.menu_jump_line(3)
+ rx.menu_up()
+ rx.menu_down()
+
+ rx.input = "HDMI1"
+ rx.menu_right()
+ rx.menu_left()
+
+
+@pytest.mark.vcr()
+def test_fade(rx):
+ rx.volume = -50
+ rx.volume_fade(-48)
+ assert rx.volume == -48
+ rx.volume_fade(-51)
+ assert rx.volume == -51