R# Plugin test: Как указать действие контекста с именем в скобках

Я создал составное контекстное действие, которое возвращает пару намерений со следующими текстами:

  • [Tag] Действие
  • Второе Действие

Сейчас я пытаюсь покрыть это действие тестами. Я сделал все по руководству, но я не могу определить первое действие, используя caret нотации.

Я пробовал следующие варианты:

  • {caret:[Tag]:Action}
  • {caret:Tag:Action}

Записка из них сработала:(

Если я сделаю то же самое для Second Action, Все отлично. Вероятно, проблема связана с квадратными скобками.

Я не хочу менять название акции. Не могли бы вы посоветовать, как указать действие в скобках?

Спасибо!

ОБНОВИТЬ

Я нашел следующий обходной путь:

  1. В файле данных укажите псевдоним для действия: {caret:TagAction},
  2. Override SelectItem метод и настройка атрибута

    protected override IBulbAction SelectItem(SetFrozenAttributeAction contextAction, string attribute, ITextControl textControl)
    {
      if (attribute == "TagAction") attribute = "[Tag] Action";
      return base.SelectItem(contextAction, attribute, textControl);
    }
    

Если ты знаешь лучший способ - предложи это:)

1 ответ

Решение

Да, это скобки. Я не знаю почему, но когда он сталкивается с открывающей скобкой {, он не читает до закрывающей скобки }, но читает набор символов, которые он считает "действительными", а затем останавливается, когда сталкивается с первым недействительным символом. Действительные символы char.IsLetter, char.IsDigit а также $, (, ), ,-, ., /, \, Но нет [ или же ] - Так что ваши {caret:[Tag] Action} просто прочитал бы {caret: а потом остановись.

Ваш обходной путь кажется лучшим выбором!

Другие вопросы по тегам