Skip to content

Commit

Permalink
TweenMain.FormatStatusTextで修飾キーが影響するテストケースを追加
Browse files Browse the repository at this point in the history
  • Loading branch information
upsilon committed Dec 14, 2023
1 parent 5915a48 commit ed7c888
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 5 deletions.
86 changes: 86 additions & 0 deletions OpenTween.Tests/TweenMainTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,92 @@ public void FormatStatusText_DisableFooterIfContainsUnofficialRT_Test()
});
}

[WinFormsFact]
public void FormatStatusText_DisableFooterIfPostByEnterAndPressedShiftKey_Test()
{
this.UsingTweenMain((tweenMain, context) =>
{
context.Settings.Common.PostCtrlEnter = false;
context.Settings.Common.PostShiftEnter = false; // Enter で投稿する設定
context.Settings.Local.StatusText = "foo";
context.Settings.Local.StatusMultiline = false; // 単一行モード

// Shift キーが押されている場合はフッターを無効化する
Assert.Equal("aaa", tweenMain.FormatStatusText("aaa", modifierKeys: Keys.Shift));
});
}

[WinFormsFact]
public void FormatStatusText_DisableFooterIfPostByEnterAndPressedCtrlKeyAndMultilineMode_Test()
{
this.UsingTweenMain((tweenMain, context) =>
{
context.Settings.Common.PostCtrlEnter = false;
context.Settings.Common.PostShiftEnter = false; // Enter で投稿する設定
context.Settings.Local.StatusText = "foo";
context.Settings.Local.StatusMultiline = true; // 複数行モード

// Ctrl キーが押されている場合はフッターを無効化する
Assert.Equal("aaa", tweenMain.FormatStatusText("aaa", modifierKeys: Keys.Control));
});
}

[WinFormsFact]
public void FormatStatusText_DisableFooterIfPostByShiftEnterAndPressedControlKey_Test()
{
this.UsingTweenMain((tweenMain, context) =>
{
context.Settings.Common.PostCtrlEnter = false;
context.Settings.Common.PostShiftEnter = true; // Shift+Enter で投稿する設定
context.Settings.Local.StatusText = "foo";

// Ctrl キーが押されている場合はフッターを無効化する
Assert.Equal("aaa", tweenMain.FormatStatusText("aaa", modifierKeys: Keys.Control));
});
}

[WinFormsFact]
public void FormatStatusText_EnableFooterIfPostByShiftEnter_Test()
{
this.UsingTweenMain((tweenMain, context) =>
{
context.Settings.Common.PostCtrlEnter = false;
context.Settings.Common.PostShiftEnter = true; // Shift+Enter で投稿する設定
context.Settings.Local.StatusText = "foo";

// Shift+Enter で投稿する場合、Ctrl キーが押されていなければフッターを付ける
Assert.Equal("aaa foo", tweenMain.FormatStatusText("aaa", modifierKeys: Keys.Shift));
});
}

[WinFormsFact]
public void FormatStatusText_DisableFooterIfPostByCtrlEnterAndPressedShiftKey_Test()
{
this.UsingTweenMain((tweenMain, context) =>
{
context.Settings.Common.PostCtrlEnter = true; // Ctrl+Enter で投稿する設定
context.Settings.Common.PostShiftEnter = false;
context.Settings.Local.StatusText = "foo";

// Shift キーが押されている場合はフッターを無効化する
Assert.Equal("aaa", tweenMain.FormatStatusText("aaa", modifierKeys: Keys.Shift));
});
}

[WinFormsFact]
public void FormatStatusText_EnableFooterIfPostByCtrlEnter_Test()
{
this.UsingTweenMain((tweenMain, context) =>
{
context.Settings.Common.PostCtrlEnter = true; // Ctrl+Enter で投稿する設定
context.Settings.Common.PostShiftEnter = false;
context.Settings.Local.StatusText = "foo";

// Ctrl+Enter で投稿する場合、Shift キーが押されていなければフッターを付ける
Assert.Equal("aaa foo", tweenMain.FormatStatusText("aaa", modifierKeys: Keys.Control));
});
}

[WinFormsFact]
public void FormatStatusText_PreventSmsCommand_Test()
{
Expand Down
13 changes: 8 additions & 5 deletions OpenTween/Tween.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3528,10 +3528,13 @@ private string FormatStatusTextExtended(string statusText, out long[] autoPopula
return this.FormatStatusText(statusText);
}

internal string FormatStatusText(string statusText)
=> this.FormatStatusText(statusText, Control.ModifierKeys);

/// <summary>
/// ツイート投稿前のフッター付与などの前処理を行います
/// </summary>
internal string FormatStatusText(string statusText)
internal string FormatStatusText(string statusText, Keys modifierKeys)
{
statusText = statusText.Replace("\r\n", "\n");

Expand All @@ -3554,14 +3557,14 @@ internal string FormatStatusText(string statusText)
bool disableFooter;
if (this.settings.Common.PostShiftEnter)
{
disableFooter = MyCommon.IsKeyDown(Keys.Control);
disableFooter = MyCommon.IsKeyDown(modifierKeys, Keys.Control);
}
else
{
if (this.StatusText.Multiline && !this.settings.Common.PostCtrlEnter)
disableFooter = MyCommon.IsKeyDown(Keys.Control);
if (this.settings.Local.StatusMultiline && !this.settings.Common.PostCtrlEnter)
disableFooter = MyCommon.IsKeyDown(modifierKeys, Keys.Control);
else
disableFooter = MyCommon.IsKeyDown(Keys.Shift);
disableFooter = MyCommon.IsKeyDown(modifierKeys, Keys.Shift);
}

if (statusText.Contains("RT @"))
Expand Down

0 comments on commit ed7c888

Please sign in to comment.