go-translator/pkg/service/features/app.feature

265 строки
4,1 КиБ
Gherkin

# Во имя Бога Милостивого, Милосердного!!!
# language: ru
Функциональность: Преобразование в C++
Сценарий: Пустой пакет
* Исходник:
```
package test
```
* Результат:
```
void loop() {}
void setup() {}
```
Сценарий: Пустая структура - класс
* Исходник:
```
package test
type device struct {}
```
* Результат:
```
class device {
public:
};
```
Сценарий: Структура с полем
* Исходник:
```
package test
type device struct {
a int
}
```
* Результат:
```
class device {
public:
int a;
};
```
Сценарий: Структура с полями одного типа
* Исходник:
```
package test
type device struct {
a,b int
}
```
* Результат:
```
class device {
public:
int a,b;
};
```
Сценарий: Структура с неск полями, строки - std::string
* Исходник:
```
package test
type device struct {
a,b int
c,d,e string
}
```
* Результат:
```
class device {
public:
int a,b;
std::string c,d,e;
};
```
Сценарий: Структура с методом
* Исходник:
```
package test
type device struct {
a int
}
func (d *device) doSomething() {
}
```
* Результат:
```
class device {
public:
int a;
void doSomething();
};
void device::doSomething() {
}
```
Сценарий: Структура с вызовом метода
* Исходник:
```
package test
type device struct {
a int
}
func (d *device) doSomething() {
d.doSomethingElse()
}
func (d *device) doSomethingElse() {
}
```
* Результат:
```
class device {
public:
int a;
void doSomething();
void doSomethingElse();
};
void device::doSomething() {
this->doSomethingElse();
}
void device::doSomethingElse() {
}
```
Сценарий: Структура с вызовом методов со входящими и выходящими параметрами
* Исходник:
```
package test
type device struct {
a int
}
func (d *device) doSomething(i int, x string) {
d.doSomethingElse(1, 0.5)
d.doSomethingElse(i, 0.6)
}
func (d *device) doSomethingElse(i int, f float64) int {
return 1
}
func (d *device) doSomethingBool(i int, f float64) bool {
return true
}
```
* Результат:
```
class device {
public:
int a;
void doSomething(int i,std::string x);
int doSomethingElse(int i,double f);
bool doSomethingBool(int i,double f);
};
void device::doSomething(int i,std::string x) {
this->doSomethingElse(1,0.5);
this->doSomethingElse(i,0.6);
}
int device::doSomethingElse(int i,double f) {
return 1;
}
bool device::doSomethingBool(int i,double f) {
return true;
}
```
Сценарий: Структура с изменением свойства
* Исходник:
```
package test
type device struct {
x int
y int
}
func (d *device) doSomething() {
d.x = 1
d.x = d.y
}
```
* Результат:
```
class device {
public:
int x;
int y;
void doSomething();
};
void device::doSomething() {
this->x=1;
this->x=this->y;
}
```
Сценарий: Структура с вызовом метода и свойства другого объекта
* Исходник:
```
package test
type device struct {
x int
}
func (d *device) doSomething() {
dev2.doSomethingElse()
}
func (d *device) doSomethingElse() {
dev2.x = 1
d.x = dev2.x
}
```
* Результат:
```
class device {
public:
int x;
void doSomething();
void doSomethingElse();
};
void device::doSomething() {
dev2->doSomethingElse();
}
void device::doSomethingElse() {
dev2->x=1;
this->x=dev2->x;
}
```
Сценарий: Структура с объявлением переменных-указателей и их созданием
* Исходник:
```
package test
var (
dev1, dev2 *device
)
type device struct {}
func main() {
dev1 = &device{}
}
```
* Результат:
```
class device {
public:
};
void main();
device *dev1,*dev2;
void main() {
dev1=new device();
}
```