Вы можете сделать с
blockquote>rgba color code
, используя css, как этот пример, приведенный ниже.
.imgbox img{ height:100px; width:200px; position:relative; } .overlay{ background:rgba(74, 19, 61, 0.4); color:#fff; text-shadow:0px 2px 5px #000079; height:100px; width:300px; position:absolute; top:10%; left:25%; padding:25px; }
<div class"imgbox"> <img src="http://www.bhmpics.com/wallpapers/little_pony_art-800x480.jpg"> <div class="overlay"> <p>This is Simple Text.</p> </div> </div>
Абсолютно, особенно имея дело с большим количеством этих перестановок/комбинаций я могу определенно видеть, что первичная обработка была бы проблемой.
Интересная реализация в Python, хотя я записал хороший в C и Ocaml на основе "Алгоритма 515" (см. ниже). Он записал его в Фортране, поскольку это было характерно тогда для всего "Алгоритма XX" бумаг, ну, в общем, тот блок или c. Я должен был переписать его и сделать некоторые маленькие улучшения для работы с массивами не диапазонов чисел. Этот делает произвольный доступ, я все еще работаю над получением некоторых хороших реализаций тех упомянутых в Knuth 4-е издание объема 2. Я буду объяснение того, как это работает читателю. Хотя, если бы кому-то любопытно, я не возразил бы против описывания чего-то.
/** [combination c n p x]
* get the [x]th lexicographically ordered set of [p] elements in [n]
* output is in [c], and should be sizeof(int)*[p] */
void combination(int* c,int n,int p, int x){
int i,r,k = 0;
for(i=0;i<p-1;i++){
c[i] = (i != 0) ? c[i-1] : 0;
do {
c[i]++;
r = choose(n-c[i],p-(i+1));
k = k + r;
} while(k < x);
k = k - r;
}
c[p-1] = c[p-2] + x - k;
}
~ "Алгоритм 515: Поколение Вектора от Лексикографического Индекса"; Застежки, B. P. и Lybanon, M. Транзакции ACM на Математическом программном обеспечении, Издании 3, № 2, июнь 1977.
С совершенно новым Python 2.6 у Вас есть стандартное решение с itertools модулем, который возвращает Декартово произведение iterables:
import itertools
print list(itertools.product([1,2,3], [4,5,6]))
[(1, 4), (1, 5), (1, 6),
(2, 4), (2, 5), (2, 6),
(3, 4), (3, 5), (3, 6)]
можно обеспечить "повторный" аргумент для выполнения продукта с повторяемым и им:
print list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
можно также настроить что-то с комбинациями также:
print list(itertools.combinations('123', 2))
[('1', '2'), ('1', '3'), ('2', '3')]
И если порядок имеет значение, существуют перестановки:
print list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4),
(2, 1), (2, 3), (2, 4),
(3, 1), (3, 2), (3, 4),
(4, 1), (4, 2), (4, 3)]
, Конечно, весь этот интересный материал точно не делает того же самого, но можно использовать их способом или другого для решения Вас проблема.
Просто помнят, что можно преобразовать кортеж или список к набору и наоборот использующий список (), кортеж () и установить ().
Я думаю, что можно сделать это с Тестовый Атрибут строки (доступный в MbUnit и более поздних версиях NUnit), где Вы могли указать несколько наборов для заполнения одного модульного теста.
Интересный вопрос!
я сделал бы это путем выбора комбинаций, чего-то как следующее в Python. Самая твердая часть является, вероятно, проверкой первичной обработки, т.е. if f(1,2,3) returns true
, который является корректным результатом? После того как Вы проверили, что, затем это - хорошая основа для регрессионного тестирования.
, Вероятно, это - хорошая идея сделать ряд тестовых сценариев, которые Вы знаете, будет все верно (например, 3,4,5 для этого треугольного случая), и ряд тестовых сценариев, которые Вы знаете, будет вся ложь (например, 0,1, inf). Затем можно более легко проверить, что тесты корректны.
# xpermutations from http://code.activestate.com/recipes/190465 from xpermutations import * lengths=[-1,0,1,5,10,0,1000,'inf'] for c in xselections(lengths,3): # or xuniqueselections print c
(-1,-1,-1); (-1,-1,0); (-1,-1,1); (-1,-1,5); (-1,-1,10); (-1,-1,0); (-1,-1,1000); (-1,-1,inf); (-1,0,-1); (-1,0,0); ...
В то время как возможно создать много данных тестирования и видеть то, что происходит, более эффективно попытаться минимизировать используемые данные.
С типичной точки зрения QA, Вы хотели бы определить различные классификации исходных данных. Произведите ряд входных значений для каждой классификации и определите соответствующие выводы.
Вот образец классов входных значений
...
, После того как Вы удовлетворены списком классификаций входов для этой функции, затем можно создать фактические данные тестирования. Вероятно, было бы полезно протестировать все перестановки каждого объекта. (например, (2,3,4), (2,4,3), (3,2,4), (3,4,2), (4,2,3), (4,3,2)) Как правило, Вы найдете, что существуют некоторые классификации, которые Вы пропустили (такие как понятие inf как входной параметр).
Случайные данные в течение некоторого промежутка времени могут быть полезными также, который может найти странные ошибки в коде, но обычно не продуктивен.
Более вероятно, эта функция используется в некотором определенном контексте, где дополнительные правила применяются. (например, только целочисленные значения или значения должны быть в 0,01 инкрементах, и т.д.), они добавляют к списку классификаций входных параметров.