Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#124 closed ожидается проверка (задача сдана)

Home Assigment #4: Lazy String

Reported by: Alexander Owned by: Vladimir Rutsky
Priority: проверка Milestone:
Component: HA#4 lazy_string Version: 1.0
Keywords: Cc:

Description

Здравстуйте, Владимир.

Прошу проверить задание 4.

С уважением,
Александр

Change History (23)

comment:1 Changed 7 years ago by cpptester

Type: ожидается проверкаожидаются исправления

Tested revision 716 by bzikadze.aleksandr.

Smoke tests

test

stage

result

info

log

run_smoke_test.cpp

gcc62

WARNING

run_smoke_test-gcc62.log

run

SUCCESS

valgrind

SUCCESS

run_smoke_test-valgrind.log

gcc62-asan

WARNING

run_smoke_test-gcc62-asan.log

asan

SUCCESS

clang-san

WARNING

run_smoke_test-clang-san.log

san

SUCCESS

Common header used in some tests: common.h

comment:2 Changed 7 years ago by cpptester

Tested revision 717 by bzikadze.aleksandr.

Smoke tests

test

stage

result

info

log

run_smoke_test.cpp

gcc62

WARNING

run_smoke_test-gcc62.log

run

SUCCESS

valgrind

SUCCESS

run_smoke_test-valgrind.log

gcc62-asan

WARNING

run_smoke_test-gcc62-asan.log

asan

SUCCESS

clang-san

SUCCESS

san

SUCCESS

Common header used in some tests: common.h

comment:3 Changed 7 years ago by Vladimir Rutsky

Александр, используйте charT() в качестве нулевого символа.

comment:4 Changed 7 years ago by cpptester

Tested revision 718 by bzikadze.aleksandr.

Smoke tests

test

stage

result

info

log

run_smoke_test.cpp

gcc62

WARNING

run_smoke_test-gcc62.log

run

SUCCESS

valgrind

SUCCESS

run_smoke_test-valgrind.log

gcc62-asan

WARNING

run_smoke_test-gcc62-asan.log

asan

SUCCESS

clang-san

SUCCESS

san

SUCCESS

Common header used in some tests: common.h

comment:5 Changed 7 years ago by cpptester

Tested revision 719 by bzikadze.aleksandr.

Main tests

test

stage

result

info

log

comp_c_str_const.cpp

gcc62

FAILURE

comp_c_str_const-gcc62.log

comp_plus_lazy_string_rev.cpp

gcc62

FAILURE

comp_plus_lazy_string_rev-gcc62.log

ncomp_iostream_include.cpp

gcc62

FAILURE

run_clear.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_clear_linked.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_clear_wide.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_ctor_lazy_str_empty.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_ctor_no_mem.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_empty.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_empty_eq.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

Common header used in some tests: common.h

comment:6 Changed 7 years ago by cpptester

Tested revision 720 by bzikadze.aleksandr.

Smoke tests

test

stage

result

info

log

run_smoke_test.cpp

gcc62

SUCCESS

run

SUCCESS

valgrind

FAILURE

exit code 1

run_smoke_test-valgrind.log

gcc62-asan

SUCCESS

asan

FAILURE

exit code 1

run_smoke_test-asan.log

clang-san

SUCCESS

san

FAILURE

exit code 1

run_smoke_test-san.log

Common header used in some tests: common.h

comment:7 Changed 7 years ago by cpptester

Tested revision 721 by bzikadze.aleksandr.

Smoke tests

test

stage

result

info

log

run_smoke_test.cpp

gcc62

SUCCESS

run

SUCCESS

valgrind

FAILURE

exit code 1

run_smoke_test-valgrind.log

gcc62-asan

SUCCESS

asan

FAILURE

exit code 1

run_smoke_test-asan.log

clang-san

SUCCESS

san

FAILURE

exit code 1

run_smoke_test-san.log

Common header used in some tests: common.h

comment:8 Changed 7 years ago by cpptester

Tested revision 722 by bzikadze.aleksandr.

Smoke tests

test

stage

result

info

log

run_smoke_test.cpp

gcc62

SUCCESS

run

SUCCESS

valgrind

FAILURE

exit code 1

run_smoke_test-valgrind.log

gcc62-asan

SUCCESS

asan

FAILURE

exit code 1

run_smoke_test-asan.log

clang-san

SUCCESS

san

FAILURE

exit code 1

run_smoke_test-san.log

Common header used in some tests: common.h

comment:9 Changed 7 years ago by cpptester

Tested revision 723 by bzikadze.aleksandr.

Main tests

test

stage

result

info

log

ncomp_iostream_include.cpp

gcc62

FAILURE

run_assign_doesnt_compare.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_assign_doesnt_compare-run.log

run_clear_no_mem.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_index_assign_assign.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_index_assign_assign-run.log

Common header used in some tests: common.h

comment:10 Changed 7 years ago by cpptester

Tested revision 724 by bzikadze.aleksandr.

Smoke tests

test

stage

result

info

log

run_smoke_test.cpp

gcc62

FAILURE

run_smoke_test-gcc62.log

Common header used in some tests: common.h

comment:11 Changed 7 years ago by cpptester

Tested revision 725 by bzikadze.aleksandr.

Main tests

test

stage

result

info

log

run_clear_no_mem.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

Common header used in some tests: common.h

comment:12 Changed 7 years ago by Alexander

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

comment:13 Changed 7 years ago by cpptester

Tested revision 740 by bzikadze.aleksandr.

Smoke tests

test

stage

result

info

log

run_smoke_test.cpp

gcc62

FAILURE

run_smoke_test-gcc62.log

Common header used in some tests: common.h

comment:14 Changed 7 years ago by cpptester

Tested revision 741 by bzikadze.aleksandr.

Smoke tests

test

stage

result

info

log

run_smoke_test.cpp

gcc62

FAILURE

run_smoke_test-gcc62.log

Common header used in some tests: common.h

comment:15 Changed 7 years ago by cpptester

Tested revision 742 by bzikadze.aleksandr.

Main tests

test

stage

result

info

log

run_clear_no_mem.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

Common header used in some tests: common.h

comment:16 in reply to:  12 Changed 7 years ago by Vladimir Rutsky

Replying to bzikadze.aleksandr:

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

Да, здесь эмулируется, что не удалось аллоцировать память и проверяется, что при этом строка не поменялась (т.е. строгая гарантия безопасности исключений).

Часть с assign_throws можно игнорировать, она ничего не делает.

comment:17 Changed 7 years ago by cpptester

Tested revision 743 by bzikadze.aleksandr.

All tests passed. Good job!

comment:18 Changed 7 years ago by Alexander

Type: ожидаются исправленияожидается проверка

comment:19 Changed 7 years ago by cpptester

Type: ожидается проверкаожидаются исправления

Tested revision 743 by bzikadze.aleksandr.

Main tests

test

stage

result

info

log

run_assign_c_str_no_mem.cpp

gcc62

SUCCESS

run

FAILURE

exit code 139

run_assign_c_str_no_mem-run.log

Common header used in some tests: common.h

comment:20 Changed 7 years ago by cpptester

Tested revision 900 by bzikadze.aleksandr.

All tests passed. Good job!

comment:21 Changed 7 years ago by Alexander

Type: ожидаются исправленияожидается проверка

comment:22 Changed 7 years ago by Vladimir Rutsky

Resolution: задача сдана
Status: newclosed

Замечания:

  1. Я рекомендую перенести ; на отдельную строку, т.к. иначе ваш код можно интерпретировать как либо случайно поставленная ;, либо как блок while с неправильным отступом:
 static size_t length (const char_type* s)
 {
   auto p = s;

   //while (*p++);

   while (*p++)
     ;

   return (size_t)(p - s - 1);
 }

Также я бы рекомендовал упросить реализацию, избавившись от арифметики указателей. Ваш подход корректен, но не так понятен, как, например:

   size_t len = 0;
   while (s[len++])
     ;
   return len;

такой код, на мой взгляд, проще и более читаем/поддерживаем (можно даже избавиться от постфиксного len++, тогда этот код будет практически "псевдокодом", который сможет прочитать любой инженер, даже без знаний C/C++, но я бы этого делать не стал).

Решение зачтено.

Last edited 7 years ago by Vladimir Rutsky (previous) (diff)

comment:23 Changed 7 years ago by Vladimir Rutsky

Milestone: ha4-milestone1

Milestone ha4-milestone1 deleted

Note: See TracTickets for help on using tickets.