Вот что мне пришлось сделать:
Я использовал jest-fetch-mock для издевательства над запросами.
обещание быть правильно отклонено, мне пришлось переопределить аргумент init
функции mockResponseOnce
.
Вот как закончилось испытание:
it("recognizes when a response's status is not okay", () => {
fetch.mockResponseOnce(JSON.stringify({ someResponse: "someResponse" }), { status: 403 });
expect.assertions(1);
return getRequestWithHeader(fullTestUrl, article).catch(err => {
expect(err.someResponse).toEqual("someResponse");
});
});
Установив статус явно, он автоматически устанавливает ok: false
в ответе, вызывая функцию.
Я также применил советы SomePerfomance и реорганизовал такую функцию:
export const getRequestWithoutHeader = fullUrlRoute =>
fetch(fullUrlRoute)
.then(response => {
if (!response.ok) {
return Promise.reject(response);
}
return response.json();
})
Вы описываете простой алгоритм Bubble Sort в соответствии с http://en.wikipedia.org/wiki/Bubble_sort :
[ 116] «.string» - это просто массив символов. Последний символ имеет значение 0, чтобы определить конец строки. Символ кодируется как 8-битное значение. Таким образом, вам нужно только использовать 8-битные регистры процессора (AL, AH, DL, DH и т. Д.) Для их обработки. Вы можете использовать 32-битные расширенные регистры (EAX, EBX, ECX, EDX и т. Д.), Но это излишне усложняет ситуацию.
Bubble Sort требуется две вложенные петли. В этом случае бесконечный внешний цикл, который заканчивается, когда строка сортируется, и внутренний цикл, который обрабатывает каждый символ.
Следующий пример очень прост. Например, последнее отсортированное письмо излишне сравнивается снова и снова. У этого есть большой потенциал для улучшения:
# Name: bubblesort.s
# Assemble & link: gcc -m32 -obubblesort bubblesort.s
# Run: ./bubblesort
.data
fmt: .string "%s\n"
str: .string "lhtgbvfmjnbcdsaawcfr"
.text
.global main
main:
pushl $str # Address of str onto the stack
pushl $fmt # Address of fmt onto the stack
call printf # Call libc: printf(fmt,str)
addl $(4*2), %esp # Adjust the stack by 2 PUSHes
O1: # Outer loop ends when everything is sorted (swapped == false)
movl $str, %esi
movb [110], %dl # swapped = false
I1: # Inner loop: every character
movb (%esi), %al
movb 1(%esi), %ah
cmpb [110], %ah # End of string?
je O2 # Yes -> exit inner loop
cmpb %ah, %al # Compare the characters
jbe I2 # If AL < AH, don't swap the characters
movb $1, %dl # swapped = true
movb %al, 1(%esi) # Swap: Store the characters in reversed order
movb %ah, (%esi)
I2:
incl %esi # Next character
jmp I1
O2:
pushal # Preserve all registers
pushl $str # Address of str onto the stack
pushl $fmt # Address of fmt onto the stack
call printf # Call libc: printf(fmt,str)
addl $(4*2), %esp # Adjust the stack by 2 PUSHes
popal # Restore all registers
cmpb $1, %dl # swapped == true?
je O1 # Yes -> one more outer loop
Done:
ret # Return: exit the main function
И вот еще одна «оживленная» иллюстрация: